{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": [],
      "toc_visible": true,
      "machine_shape": "hm"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "accelerator": "GPU",
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "2efb606ae85043d2aec636657b8dc23c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_1b6366fa2570491f852ca70c8dd78a3b",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_39b0a4ffae63427ba7e1b688e5a6d011",
              "IPY_MODEL_12fcdc8b8f9c4c14836f67a8012d43f7"
            ]
          },
          "model_module_version": "1.5.0"
        },
        "1b6366fa2570491f852ca70c8dd78a3b": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "39b0a4ffae63427ba7e1b688e5a6d011": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_1fd362b69c9d44f58239aeb5080705c6",
            "_dom_classes": [],
            "description": "Downloading: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 425,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 425,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_4a0ebf07f34641d5b059e0def5d92d41"
          },
          "model_module_version": "1.5.0"
        },
        "12fcdc8b8f9c4c14836f67a8012d43f7": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_d7ae2eb9cdf24069ad682092497e0bfe",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 425/425 [00:23&lt;00:00, 18.1B/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_c6a703307fa84008a1a651a0bde9aff9"
          },
          "model_module_version": "1.5.0"
        },
        "1fd362b69c9d44f58239aeb5080705c6": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          },
          "model_module_version": "1.5.0"
        },
        "4a0ebf07f34641d5b059e0def5d92d41": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "d7ae2eb9cdf24069ad682092497e0bfe": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          },
          "model_module_version": "1.5.0"
        },
        "c6a703307fa84008a1a651a0bde9aff9": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "36a2eee270944e1ea01101031a0e430c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_1ab261bd567b47f593bef7559d7140e5",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_f60180a0cd674bb2b8842f6f174613b1",
              "IPY_MODEL_6f521b76233846d8a09ee7ab98f7ea03"
            ]
          },
          "model_module_version": "1.5.0"
        },
        "1ab261bd567b47f593bef7559d7140e5": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "f60180a0cd674bb2b8842f6f174613b1": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_cf4f03a541d94ab29d4825910471cf27",
            "_dom_classes": [],
            "description": "Downloading: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 345636463,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 345636463,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_6715a58a5d564ebf8bf64b705cf6f76c"
          },
          "model_module_version": "1.5.0"
        },
        "6f521b76233846d8a09ee7ab98f7ea03": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_495a2c6efc654ff29bbcbe1a7ba1e41e",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 346M/346M [00:23&lt;00:00, 15.0MB/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_0b5c8cf671ca4cb09703ee9dde8766c9"
          },
          "model_module_version": "1.5.0"
        },
        "cf4f03a541d94ab29d4825910471cf27": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          },
          "model_module_version": "1.5.0"
        },
        "6715a58a5d564ebf8bf64b705cf6f76c": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "495a2c6efc654ff29bbcbe1a7ba1e41e": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          },
          "model_module_version": "1.5.0"
        },
        "0b5c8cf671ca4cb09703ee9dde8766c9": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "d54bd61599c740ce9afbd6dd0cdf3918": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_6373a61866e8427899a8c56ac463fc88",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_892ab87763ca4569b1c14c7a864f0327",
              "IPY_MODEL_f9ccf45eaeae49cd9ab55c8524fd06f7"
            ]
          },
          "model_module_version": "1.5.0"
        },
        "6373a61866e8427899a8c56ac463fc88": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "892ab87763ca4569b1c14c7a864f0327": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_598d0a9ff37e4051a77fe32e33c89d69",
            "_dom_classes": [],
            "description": "Downloading: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 160,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 160,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_1de61920e64e41c8ba8da72e7ef9e27d"
          },
          "model_module_version": "1.5.0"
        },
        "f9ccf45eaeae49cd9ab55c8524fd06f7": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_f69783a89ebf4887aa55388c5f936d3b",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 160/160 [00:07&lt;00:00, 20.7B/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_a6023bb8327044c4a6b478656261ef7d"
          },
          "model_module_version": "1.5.0"
        },
        "598d0a9ff37e4051a77fe32e33c89d69": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          },
          "model_module_version": "1.5.0"
        },
        "1de61920e64e41c8ba8da72e7ef9e27d": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "f69783a89ebf4887aa55388c5f936d3b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          },
          "model_module_version": "1.5.0"
        },
        "a6023bb8327044c4a6b478656261ef7d": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          },
          "model_module_version": "1.2.0"
        },
        "state": {}
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "szWwJmqPHZ-r"
      },
      "source": [
        "## Training the Vision Transformer on a Custom Dataset\n",
        "\n",
        "In this notebook, we are going to fine-tune a pre-trained Vision Transformer (which can be found from [Huggingface](https://github.com/huggingface/transformers)) on a Custom Dataset. For this notebook we will be using the Rock, Paper, Scissors dataset which can be found [here](https://public.roboflow.com/classification/rock-paper-scissors/1). This dataset is a collection of 2925 images images in 3 different classes. This tutorial is based on Huggingface's [Fine tuning the Vision Transformer on CIFAR 10 notebook](https://colab.research.google.com/github/NielsRogge/Transformers-Tutorials/blob/master/VisionTransformer/Fine_tuning_the_Vision_Transformer_on_CIFAR_10_with_the_%F0%9F%A4%97_Trainer.ipynb).\n",
        "\n",
        "### Accompanying Blog Post\n",
        "\n",
        "We recommend that you follow along in this notebook while reading the blog post on [How to Train the HuggingFace Vision Transformer On a Custom Dataset](blog.roboflow.com/how-to-train-the-huggingface-vision-transformer-on-a-custom-dataset/) concurrently.\n",
        "\n",
        "\n",
        "We will prepare the data using [Roboflow's Preprocessing Tools](https://docs.roboflow.com/image-transformations/image-preprocessing), and train the model using this notebook. \n",
        "\n",
        "### Steps Covered in this Tutorial\n",
        "\n",
        "In this tutorial, we will walk through the steps required to train a Vision Transformer on your custom classification data.\n",
        "\n",
        "To train our image classifier we take the following steps:\n",
        "\n",
        "* Install Vision Transformer dependencies\n",
        "* Download custom Image Classification data using Roboflow\n",
        "* Use the Vision Transformer Feature Extractor\n",
        "* Run the Vision Transformer training procedure\n",
        "* Evaluate the Vision Transformer on a test image\n",
        "* Export the Vision Transformer model for future inference\n",
        "\n",
        "\n",
        "### **About**\n",
        "\n",
        "[Roboflow](https://roboflow.com) enables teams to deploy custom computer vision models quickly and accurately. Convert data from to annotation format, assess dataset health, preprocess, augment, and more. It's free for your first 1000 source images.\n",
        "\n",
        "**Looking for a vision model available via API without hassle? Try Roboflow Train.**\n",
        "\n",
        "![Roboflow Wordmark](https://i.imgur.com/dcLNMhV.png)\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3_7rNZfIf301"
      },
      "source": [
        "Let's start by installing the relevant libraries."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6MCTZFkFw6i6",
        "outputId": "a174e771-daae-47fc-c96b-be627e41b9b6"
      },
      "source": [
        "!pip install -q git+https://github.com/huggingface/transformers"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "  Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n",
            "  Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n",
            "    Preparing wheel metadata ... \u001b[?25l\u001b[?25hdone\n",
            "\u001b[K     |████████████████████████████████| 901kB 13.8MB/s \n",
            "\u001b[K     |████████████████████████████████| 3.3MB 50.4MB/s \n",
            "\u001b[?25h  Building wheel for transformers (PEP 517) ... \u001b[?25l\u001b[?25hdone\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PZMQIvJDicO9"
      },
      "source": [
        "# Download the Data \n",
        "\n",
        "We'll preprocess and download our dataset from Roboflow. To preprocess the images, change the size of the image to 224x224. To download the dataset, use the \"**Folder Structure**\" export format.\n",
        "\n",
        "To get your data into Roboflow, follow the [Getting Started Guide](https://blog.roboflow.ai/getting-started-with-roboflow/).\n",
        "\n",
        "Note: This data has already been preprocessed through Roboflow; we HIGHLY reccommend you follow the [accompanying blog](blog.roboflow.com/how-to-train-the-huggingface-vision-transformer-on-a-custom-dataset/) as you go through this notebook.\n",
        "\n",
        "![folder.PNG]()"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "XC9HqG5u750_",
        "outputId": "0d20ab53-3728-42bd-e1ff-a4bc41d10fbb"
      },
      "source": [
        "!curl -L \"https://app.roboflow.com/ds/[YOUR-KEY-HERE]\" > roboflow.zip; unzip roboflow.zip; rm roboflow.zip"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
            "                                 Dload  Upload   Total   Spent    Left  Speed\n",
            "100   889  100   889    0     0   1607      0 --:--:-- --:--:-- --:--:--  1604\n",
            "100 3577k  100 3577k    0     0  1957k      0  0:00:01  0:00:01 --:--:-- 51.3M\n",
            "Archive:  roboflow.zip\n",
            " extracting: README.dataset.txt      \n",
            " extracting: README.roboflow.txt     \n",
            "   creating: test/\n",
            "   creating: test/paper/\n",
            " extracting: test/paper/paper02-049_png_jpg.rf.aa4d1f2cd7fdd327e3b8568e0963ba9b.jpg  \n",
            " extracting: test/paper/paper02-110_png_jpg.rf.05ac286868b73b7d05b387c60605acd5.jpg  \n",
            " extracting: test/paper/paper03-047_png_jpg.rf.9f64c4e0af1e529407c16f8c4abf991a.jpg  \n",
            " extracting: test/paper/paper03-063_png_jpg.rf.0d478138eecd5eeb53a69f40221f9714.jpg  \n",
            " extracting: test/paper/paper03-086_png_jpg.rf.ade80716c37c399255ccc05f28b8c18b.jpg  \n",
            " extracting: test/paper/paper04-003_png_jpg.rf.dacad300f74be724b6efe037bb697822.jpg  \n",
            " extracting: test/paper/paper04-018_png_jpg.rf.c87f1d2fd7ef213b02c959715e0fdc30.jpg  \n",
            " extracting: test/paper/paper04-111_png_jpg.rf.3cc70d192fd88a30e12afc19b3066c8e.jpg  \n",
            " extracting: test/paper/paper05-037_png_jpg.rf.626766862c908eaac21f9e5ebe35826f.jpg  \n",
            " extracting: test/paper/paper05-059_png_jpg.rf.a1a0a97bc5c94da7638e3e701d0037d9.jpg  \n",
            " extracting: test/paper/paper06-028_png_jpg.rf.dc60f817737fd185871b9ec38d5440bc.jpg  \n",
            " extracting: test/paper/paper07-015_png_jpg.rf.4a4ed52ab7ab22aedce0433e008598dc.jpg  \n",
            " extracting: test/paper/paper07-038_png_jpg.rf.7e3a7979631c12c965f3d91474b40380.jpg  \n",
            " extracting: test/paper/paper07-044_png_jpg.rf.4f1456718a0c3524060f1db1a7ca839f.jpg  \n",
            " extracting: test/paper/paper07-113_png_jpg.rf.7de16f7bb0bb4f6b61a7ccd673e8716c.jpg  \n",
            " extracting: test/paper/paper3_png_jpg.rf.c968fcc0ca6063245747dabf25c8c530.jpg  \n",
            " extracting: test/paper/paper4_png_jpg.rf.77279e2a588b4be1dcf1a6025d8af91c.jpg  \n",
            " extracting: test/paper/paper9_png_jpg.rf.5118c7c6dad8901b1595f40ca0c7b981.jpg  \n",
            " extracting: test/paper/testpaper01-06_png_jpg.rf.50710cb192ccbc7b019679388956db0d.jpg  \n",
            " extracting: test/paper/testpaper02-11_png_jpg.rf.ac1d3859b67c5827f062a0426a5a9ef2.jpg  \n",
            " extracting: test/paper/testpaper02-18_png_jpg.rf.78cdc33c949f1fc4b8d34496f9736776.jpg  \n",
            " extracting: test/paper/testpaper02-20_png_jpg.rf.b428e98da4b22e2aea62e04d7aeac14c.jpg  \n",
            " extracting: test/paper/testpaper02-22_png_jpg.rf.fff2e5fe8be13995333346d3de910a99.jpg  \n",
            " extracting: test/paper/testpaper02-29_png_jpg.rf.e1aac637494b63bd41ee338bb0407cc5.jpg  \n",
            " extracting: test/paper/testpaper03-18_png_jpg.rf.f291758de609095fee60bab11dcfd292.jpg  \n",
            " extracting: test/paper/testpaper04-07_png_jpg.rf.ec99bf2fed5fbc6e4195fd00d887b3c0.jpg  \n",
            " extracting: test/paper/testpaper04-09_png_jpg.rf.8777086163727be11f83880bfa3350d2.jpg  \n",
            " extracting: test/paper/testpaper04-22_png_jpg.rf.23e48be076d7439ae1c4eb09c713103c.jpg  \n",
            " extracting: test/paper/testpaper04-23_png_jpg.rf.3c3491367b582d438b1ab2874b5f48e5.jpg  \n",
            "   creating: test/rock/\n",
            " extracting: test/rock/rock01-074_png_jpg.rf.e32cfa9047f095c14e9ffd8f39b5be96.jpg  \n",
            " extracting: test/rock/rock01-115_png_jpg.rf.eab5b3a557b97e89c048fecfe8ced952.jpg  \n",
            " extracting: test/rock/rock02-027_png_jpg.rf.89df438c2a50056f222cfb629863c461.jpg  \n",
            " extracting: test/rock/rock02-107_png_jpg.rf.b59a9dda75b1e11fec23fe97cf73a144.jpg  \n",
            " extracting: test/rock/rock03-043_png_jpg.rf.a7dc408e0cf1492ff09f3af6c9f10f34.jpg  \n",
            " extracting: test/rock/rock04-002_png_jpg.rf.d9e4238a233290107d462797b93243dc.jpg  \n",
            " extracting: test/rock/rock04-012_png_jpg.rf.5eb0c6fd2967c8a3f7b9e72d88785e6c.jpg  \n",
            " extracting: test/rock/rock04-080_png_jpg.rf.66532ab4a3dc92aeee95db1793fd0d0d.jpg  \n",
            " extracting: test/rock/rock04-102_png_jpg.rf.04dbafaafbde9bd2744022a2c7d5d3b8.jpg  \n",
            " extracting: test/rock/rock05ck01-030_png_jpg.rf.976d37bbc9a554beec9ecb900e14bd0e.jpg  \n",
            " extracting: test/rock/rock05ck01-037_png_jpg.rf.f4deecf85416a923eabc3f7e33d3e8b6.jpg  \n",
            " extracting: test/rock/rock05ck01-058_png_jpg.rf.2048e26abaa9da99bfaaf6c190a9b09a.jpg  \n",
            " extracting: test/rock/rock05ck01-090_png_jpg.rf.52647d4aad7488979cbe7989cdedb27e.jpg  \n",
            " extracting: test/rock/rock06ck02-007_png_jpg.rf.0d39c991445c25a4ffd24880ae173bd9.jpg  \n",
            " extracting: test/rock/rock06ck02-113_png_jpg.rf.8eff1f97c54b299c12d9856865022a96.jpg  \n",
            " extracting: test/rock/rock07-k03-018_png_jpg.rf.d8ec20bbdbd208b8accb6b2b10c44720.jpg  \n",
            " extracting: test/rock/rock07-k03-043_png_jpg.rf.d3c90136508d7fb96ab33f8d2f853d22.jpg  \n",
            " extracting: test/rock/rock07-k03-119_png_jpg.rf.4133d215e8fefe111c23234040974ced.jpg  \n",
            " extracting: test/rock/testrock01-08_png_jpg.rf.8274faaec8815fd0e31612aec4eba5b8.jpg  \n",
            " extracting: test/rock/testrock02-01_png_jpg.rf.5f359b293857c4d02c7b411937aa61d2.jpg  \n",
            " extracting: test/rock/testrock02-15_png_jpg.rf.daa04eb5ea2af7275f8020460ca96c72.jpg  \n",
            " extracting: test/rock/testrock02-21_png_jpg.rf.624981800ba961011d59a33773def439.jpg  \n",
            " extracting: test/rock/testrock02-27_png_jpg.rf.fc25fbf386c0b320f5af3b6dda2ea2fb.jpg  \n",
            " extracting: test/rock/testrock03-00_png_jpg.rf.8e3857c68a815d68963e67e8b19735e0.jpg  \n",
            " extracting: test/rock/testrock03-15_png_jpg.rf.7f8cb24042d8a3275435a51bf0d563aa.jpg  \n",
            " extracting: test/rock/testrock04-01_png_jpg.rf.4a56978a3c0af2da6710783fa47fb844.jpg  \n",
            " extracting: test/rock/testrock04-08_png_jpg.rf.38176bdd5a9e74a430e7b47ad5e04f3e.jpg  \n",
            " extracting: test/rock/testrock04-26_png_jpg.rf.60f8ee418dc07e3602673caf94138e95.jpg  \n",
            "   creating: test/scissors/\n",
            " extracting: test/scissors/scissors-hires1_png_jpg.rf.10613ddf0003692fcce90d72b260b006.jpg  \n",
            " extracting: test/scissors/scissors01-009_png_jpg.rf.0db9fd5f2c42f15d780966f3fd8db9e5.jpg  \n",
            " extracting: test/scissors/scissors01-018_png_jpg.rf.500518ff9e861067e992c64f33e0c4d7.jpg  \n",
            " extracting: test/scissors/scissors01-022_png_jpg.rf.90f1cb4ad7dd6d76f73495ab15f22a72.jpg  \n",
            " extracting: test/scissors/scissors01-037_png_jpg.rf.637074880c7fdd1473ef479e78c2ff05.jpg  \n",
            " extracting: test/scissors/scissors01-082_png_jpg.rf.213f4c9cc3d8de477437eea0ecff5d1f.jpg  \n",
            " extracting: test/scissors/scissors02-014_png_jpg.rf.f5038581032e6049930f57e7e40d8c9a.jpg  \n",
            " extracting: test/scissors/scissors02-019_png_jpg.rf.d6f06b9cfabbd1ae62182a4c554aa084.jpg  \n",
            " extracting: test/scissors/scissors02-030_png_jpg.rf.e5b0afee4591ca7405df0411666756d0.jpg  \n",
            " extracting: test/scissors/scissors02-035_png_jpg.rf.d329bee097a92194fb2d128c67a8721c.jpg  \n",
            " extracting: test/scissors/scissors03-039_png_jpg.rf.8ef25ba20255d283bfcd69c7ca38ce58.jpg  \n",
            " extracting: test/scissors/scissors04-061_png_jpg.rf.f4fc7a7d3ccb929805aadbb461cc6cfd.jpg  \n",
            " extracting: test/scissors/testscissors01-09_png_jpg.rf.7990740037cff895b1433330bfe6a9d2.jpg  \n",
            " extracting: test/scissors/testscissors01-13_png_jpg.rf.3143e0c4b3d48e13a111f873fbfd8cce.jpg  \n",
            " extracting: test/scissors/testscissors01-15_png_jpg.rf.4194942e4cf79ec1e51cd6062a8051ba.jpg  \n",
            " extracting: test/scissors/testscissors02-003_png_jpg.rf.53c9a2e36fa09f2dea6d29aad404ff57.jpg  \n",
            " extracting: test/scissors/testscissors02-040_png_jpg.rf.ecbf58812b66580e8a032c15a8955f80.jpg  \n",
            " extracting: test/scissors/testscissors02-081_png_jpg.rf.bea549599733ffca8f0b30d3d85ff830.jpg  \n",
            " extracting: test/scissors/testscissors02-25_png_jpg.rf.2836c04167bd2b9675c4d279dac87f98.jpg  \n",
            " extracting: test/scissors/testscissors03-026_png_jpg.rf.20dc6b77fe98038c2fcae88d88710964.jpg  \n",
            " extracting: test/scissors/testscissors03-055_png_jpg.rf.83704ab50221390f48b734ce00bfd95d.jpg  \n",
            " extracting: test/scissors/testscissors03-104_png_jpg.rf.7c71351257ec97e6e644f2ac4b6b3ef2.jpg  \n",
            " extracting: test/scissors/testscissors03-11_png_jpg.rf.d144ae44c1fd65b09673b14ab9321ab5.jpg  \n",
            " extracting: test/scissors/testscissors03-20_png_jpg.rf.9385c95c70c9d2f7637553d5fa36c7b0.jpg  \n",
            " extracting: test/scissors/testscissors03-21_png_jpg.rf.4e435e3688517d2f338bdfeef3904964.jpg  \n",
            " extracting: test/scissors/testscissors03-22_png_jpg.rf.b6dc1e669d00c9b024f90376066bdf1f.jpg  \n",
            " extracting: test/scissors/testscissors03-25_png_jpg.rf.85fdcf5fbcc5f4f7a231ed55af0bf9e7.jpg  \n",
            " extracting: test/scissors/testscissors03-30_png_jpg.rf.b1ff357bf06ddc6727e5e4aad7b594e3.jpg  \n",
            " extracting: test/scissors/testscissors04-06_png_jpg.rf.1b05a8d2b62b352ad57795afab73239b.jpg  \n",
            " extracting: test/scissors/testscissors04-12_png_jpg.rf.2158727cbf1eeffa66b7efb40e8d086c.jpg  \n",
            " extracting: test/scissors/testscissors04-14_png_jpg.rf.6d826048c64b1a36b49b27b2063cea26.jpg  \n",
            " extracting: test/scissors/testscissors04-27_png_jpg.rf.67137674e6a2109aa0f06ab1c4b51a22.jpg  \n",
            " extracting: test/scissors/testscissors04-28_png_jpg.rf.a0d229c783663189b9cd38d18cb098f3.jpg  \n",
            "   creating: train/\n",
            "   creating: train/paper/\n",
            " extracting: train/paper/paper-hires2_png_jpg.rf.1f08317c1c6d6b1a7f256a1865346b2e.jpg  \n",
            " extracting: train/paper/paper01-004_png_jpg.rf.0a1c6de7053a994d9a6de46808c1e0b1.jpg  \n",
            " extracting: train/paper/paper01-005_png_jpg.rf.6f87ac7c4a7d2c862a4c725eee10c472.jpg  \n",
            " extracting: train/paper/paper01-008_png_jpg.rf.e744f04a27e3f642218e3d5a9d76b46e.jpg  \n",
            " extracting: train/paper/paper01-016_png_jpg.rf.7661c3130e819fcbe412c01bce6057cf.jpg  \n",
            " extracting: train/paper/paper01-018_png_jpg.rf.f14c591e87dd037a803bbb7624444973.jpg  \n",
            " extracting: train/paper/paper01-024_png_jpg.rf.a03f0065a7ba3e1119cb47e97ee28934.jpg  \n",
            " extracting: train/paper/paper01-027_png_jpg.rf.553b880a348c3d04b700767390cccf67.jpg  \n",
            " extracting: train/paper/paper01-033_png_jpg.rf.eae862d4282abc96f7f81d55c0693677.jpg  \n",
            " extracting: train/paper/paper01-037_png_jpg.rf.3e8bc358aa3acf0748ac735eb7d13a85.jpg  \n",
            " extracting: train/paper/paper01-051_png_jpg.rf.8a027e4a6d7be93f18dde8e7b23c5f2c.jpg  \n",
            " extracting: train/paper/paper01-068_png_jpg.rf.52bbd15de69a2f394d536eaa666f8509.jpg  \n",
            " extracting: train/paper/paper01-089_png_jpg.rf.de6e8b94bd7551c93e02190b70c789fb.jpg  \n",
            " extracting: train/paper/paper01-107_png_jpg.rf.be60383fe925b515d6fd75cf301ab472.jpg  \n",
            " extracting: train/paper/paper01-111_png_jpg.rf.56de63150e6fb04bf2f00501ac298a9f.jpg  \n",
            " extracting: train/paper/paper02-003_png_jpg.rf.bcccf4271a2833fcb3c317bdf404000d.jpg  \n",
            " extracting: train/paper/paper02-007_png_jpg.rf.579afee9a426361ceddf79b7666f2609.jpg  \n",
            " extracting: train/paper/paper02-010_png_jpg.rf.eb20b2ea0fe5e97f20bebe65acf01ef4.jpg  \n",
            " extracting: train/paper/paper02-014_png_jpg.rf.aed38280c98f6cef9208dfffdc1d681f.jpg  \n",
            " extracting: train/paper/paper02-015_png_jpg.rf.23b061c49d0234c4e3362f3bd08f49a4.jpg  \n",
            " extracting: train/paper/paper02-028_png_jpg.rf.1a93b9e4e101b22cd7d141f2a103b893.jpg  \n",
            " extracting: train/paper/paper02-029_png_jpg.rf.e1c171a893539ce5fa81e109346003c5.jpg  \n",
            " extracting: train/paper/paper02-031_png_jpg.rf.8a726ba0113321543611fa00f6d58288.jpg  \n",
            " extracting: train/paper/paper02-044_png_jpg.rf.a793ed5522013a56eebdd454beb49472.jpg  \n",
            " extracting: train/paper/paper02-046_png_jpg.rf.8a201cac2924cc546edd15d92391e763.jpg  \n",
            " extracting: train/paper/paper02-050_png_jpg.rf.5d191999c0a7646c12a3fae74a167636.jpg  \n",
            " extracting: train/paper/paper02-056_png_jpg.rf.402ba9f8cbacfa30f17cdc29968901fc.jpg  \n",
            " extracting: train/paper/paper02-070_png_jpg.rf.365a1e8cc63a1d6bfffed42d6c88f1a0.jpg  \n",
            " extracting: train/paper/paper02-071_png_jpg.rf.9af009be2a511aa07c5351ef74f1f9ed.jpg  \n",
            " extracting: train/paper/paper02-075_png_jpg.rf.a2643e0baf6e6f4b6459b3e6dc07a2be.jpg  \n",
            " extracting: train/paper/paper02-082_png_jpg.rf.835a9b72876c3dd117b61615ab2d21c0.jpg  \n",
            " extracting: train/paper/paper02-089_png_jpg.rf.2cceae5d71a840d520cd0429c30a1a03.jpg  \n",
            " extracting: train/paper/paper02-106_png_jpg.rf.e0f73f85ffd37466dc49cb475eb8ee60.jpg  \n",
            " extracting: train/paper/paper03-006_png_jpg.rf.65764ceb3f335f90374628de58649da9.jpg  \n",
            " extracting: train/paper/paper03-008_png_jpg.rf.d68b839b4e974dabb971cbe0047c41da.jpg  \n",
            " extracting: train/paper/paper03-024_png_jpg.rf.b293da292009d3bdaa5d061cb87550da.jpg  \n",
            " extracting: train/paper/paper03-025_png_jpg.rf.de2a95c636f381fe30ff90f0d49c5424.jpg  \n",
            " extracting: train/paper/paper03-028_png_jpg.rf.0cc93886386b3148b8cafb79fa4b3d5e.jpg  \n",
            " extracting: train/paper/paper03-033_png_jpg.rf.d29dcaa26cd9f5017960c9a2e9269171.jpg  \n",
            " extracting: train/paper/paper03-037_png_jpg.rf.f85bc1b3cc7753903f8aa4ba3ac37933.jpg  \n",
            " extracting: train/paper/paper03-052_png_jpg.rf.a9a177605f429bcda0cd1496c81b986f.jpg  \n",
            " extracting: train/paper/paper03-055_png_jpg.rf.02e763ef019c3a2ff2f182b4a007c9fa.jpg  \n",
            " extracting: train/paper/paper03-061_png_jpg.rf.95aafae6d34687246df298d72f36476f.jpg  \n",
            " extracting: train/paper/paper03-062_png_jpg.rf.fbb71bd370357d2c65f865e5a93f6cef.jpg  \n",
            " extracting: train/paper/paper03-069_png_jpg.rf.556c94786b77d71623c64b76f8e3f6e5.jpg  \n",
            " extracting: train/paper/paper03-085_png_jpg.rf.a0900f845e1a101940f2717925266cf7.jpg  \n",
            " extracting: train/paper/paper03-091_png_jpg.rf.495633e29a2c76bc8d013f508a1c16c6.jpg  \n",
            " extracting: train/paper/paper03-096_png_jpg.rf.1f730462bda968e674bac3c213dbd360.jpg  \n",
            " extracting: train/paper/paper03-100_png_jpg.rf.86eeb7a492a7f4788ce20e4a5d1b067c.jpg  \n",
            " extracting: train/paper/paper03-106_png_jpg.rf.d9cb64762462c9ea6d343bfec908e158.jpg  \n",
            " extracting: train/paper/paper03-112_png_jpg.rf.a3774cbff213417bc2c884d31eb241c7.jpg  \n",
            " extracting: train/paper/paper03-116_png_jpg.rf.9211090207625ca09d0ad29dad665975.jpg  \n",
            " extracting: train/paper/paper04-009_png_jpg.rf.9dee1361aa949de5bf10ab81170d03be.jpg  \n",
            " extracting: train/paper/paper04-012_png_jpg.rf.7def1165d8ab94eabc2d8875f695cdec.jpg  \n",
            " extracting: train/paper/paper04-027_png_jpg.rf.97d28cac01ff5c9eb3b76e9cf2d6d81a.jpg  \n",
            " extracting: train/paper/paper04-034_png_jpg.rf.b73a11e59a7bb61eeca7f4eee2804494.jpg  \n",
            " extracting: train/paper/paper04-048_png_jpg.rf.afcd86280463fbd978a90305b8ac396e.jpg  \n",
            " extracting: train/paper/paper04-052_png_jpg.rf.1c14abd70a8195696399d91484e1afad.jpg  \n",
            " extracting: train/paper/paper04-072_png_jpg.rf.8587c1c7880a69711d4dbd891af56b2d.jpg  \n",
            " extracting: train/paper/paper04-075_png_jpg.rf.322b206c1d1d8f9b74f00cb723b60c62.jpg  \n",
            " extracting: train/paper/paper04-079_png_jpg.rf.e773a42e422b819738241d380df59b3a.jpg  \n",
            " extracting: train/paper/paper04-099_png_jpg.rf.468d4a846e58f3e4421e9e73a2e93f34.jpg  \n",
            " extracting: train/paper/paper05-001_png_jpg.rf.89000f9109a46fb2c322c2153275ca3d.jpg  \n",
            " extracting: train/paper/paper05-009_png_jpg.rf.570ed88f6ed4cb0a483e7e00939fc3ae.jpg  \n",
            " extracting: train/paper/paper05-013_png_jpg.rf.7ed05412f250d8db8e48e74b65cdd1bf.jpg  \n",
            " extracting: train/paper/paper05-017_png_jpg.rf.e28b8e736cb9a46c92d2250ada8d7fd2.jpg  \n",
            " extracting: train/paper/paper05-027_png_jpg.rf.7c349f9ee3731915cb8ceafb582b5324.jpg  \n",
            " extracting: train/paper/paper05-040_png_jpg.rf.b45d9159bd5d1f3a8064a938b286be38.jpg  \n",
            " extracting: train/paper/paper05-042_png_jpg.rf.0f89d98ef38acdfd4d6a5cda925f8563.jpg  \n",
            " extracting: train/paper/paper05-049_png_jpg.rf.9fe2ca40fc9025e9f32987e05fc8f6f5.jpg  \n",
            " extracting: train/paper/paper05-053_png_jpg.rf.26c44b38db5750df31f904c0a3fef632.jpg  \n",
            " extracting: train/paper/paper05-054_png_jpg.rf.45f07aa4a3c2daa63a52e1baecc5d53c.jpg  \n",
            " extracting: train/paper/paper05-068_png_jpg.rf.834e724fd4a1ec5a800f113138e04d74.jpg  \n",
            " extracting: train/paper/paper05-081_png_jpg.rf.18ac7545b25f2dac4adc03efec5bf313.jpg  \n",
            " extracting: train/paper/paper05-092_png_jpg.rf.96bdbe8515d3de5e95f224eb65de8b99.jpg  \n",
            " extracting: train/paper/paper05-099_png_jpg.rf.5060a1b5fe8574a27963f4246eff3bda.jpg  \n",
            " extracting: train/paper/paper05-101_png_jpg.rf.2c4c46a1c7dd4a769a10c54712941ede.jpg  \n",
            " extracting: train/paper/paper05-106_png_jpg.rf.06da727004fb9a1d8293e031014e056a.jpg  \n",
            " extracting: train/paper/paper05-109_png_jpg.rf.ab8443462478d7ce5a2db8267e3195af.jpg  \n",
            " extracting: train/paper/paper05-110_png_jpg.rf.0768538413883bfc9c54bd8398a18125.jpg  \n",
            " extracting: train/paper/paper05-115_png_jpg.rf.9be5e160f48b266fa323e450b70d2be5.jpg  \n",
            " extracting: train/paper/paper05-117_png_jpg.rf.252b7d25f7b4a5ab488a185690955471.jpg  \n",
            " extracting: train/paper/paper06-000_png_jpg.rf.e7c8cbcd169d08f4fad19de3086408f0.jpg  \n",
            " extracting: train/paper/paper06-003_png_jpg.rf.c5e0001749772ba34d731a9311992e6b.jpg  \n",
            " extracting: train/paper/paper06-009_png_jpg.rf.26289e7a25b4d137cadbf74266b8cb4a.jpg  \n",
            " extracting: train/paper/paper06-013_png_jpg.rf.1df455a47da7d452dcfd6dedb916696c.jpg  \n",
            " extracting: train/paper/paper06-029_png_jpg.rf.0bc891273d32496b36fdd50baebfb2aa.jpg  \n",
            " extracting: train/paper/paper06-042_png_jpg.rf.d8e5664b0ef2327b42c54d842b890edf.jpg  \n",
            " extracting: train/paper/paper06-045_png_jpg.rf.6e8ade6dcf33c61549486f4c3de092d3.jpg  \n",
            " extracting: train/paper/paper06-048_png_jpg.rf.0d90df565b79ea720652d1a542f5a6dd.jpg  \n",
            " extracting: train/paper/paper06-050_png_jpg.rf.83823535d7a6bb1ce3b878b3c72d15f1.jpg  \n",
            " extracting: train/paper/paper06-052_png_jpg.rf.11709bb8c0161684962840cfb3f57b86.jpg  \n",
            " extracting: train/paper/paper06-055_png_jpg.rf.77e169b84036e9524458837449a45036.jpg  \n",
            " extracting: train/paper/paper06-059_png_jpg.rf.ea7ea88a70d7e1a1101c0283209baace.jpg  \n",
            " extracting: train/paper/paper06-080_png_jpg.rf.4f38b44b73dd2b4718ddab48f1e5e794.jpg  \n",
            " extracting: train/paper/paper06-081_png_jpg.rf.03c78140681c700a63e0f1364ad95edb.jpg  \n",
            " extracting: train/paper/paper06-082_png_jpg.rf.9a85cae4b5850890071d880a37cecbc9.jpg  \n",
            " extracting: train/paper/paper06-083_png_jpg.rf.87896c82adadb47c7239de9e3c9ac4fb.jpg  \n",
            " extracting: train/paper/paper06-090_png_jpg.rf.7b6a4ccdb4dfa3beb7c766b63e7bf419.jpg  \n",
            " extracting: train/paper/paper06-107_png_jpg.rf.def21b33deee2cc44c1d7e55796db0c4.jpg  \n",
            " extracting: train/paper/paper06-108_png_jpg.rf.478611584dd50493f82d421bb791a8c2.jpg  \n",
            " extracting: train/paper/paper06-115_png_jpg.rf.967f5cf45ee3a0dfdf47864f7b7b005e.jpg  \n",
            " extracting: train/paper/paper06-116_png_jpg.rf.3d0d7f45079cfbdd4136568a65c192af.jpg  \n",
            " extracting: train/paper/paper07-002_png_jpg.rf.b3834947199b107b484dda60368e2915.jpg  \n",
            " extracting: train/paper/paper07-004_png_jpg.rf.f4fb29e259ba6e1b9e05a6c170821411.jpg  \n",
            " extracting: train/paper/paper07-020_png_jpg.rf.d9932bb6fa5e864b46595a85b1e9f44e.jpg  \n",
            " extracting: train/paper/paper07-037_png_jpg.rf.62588acfc516f6f8303ad1842be9800a.jpg  \n",
            " extracting: train/paper/paper07-058_png_jpg.rf.50edee0924e13dbd3099c4b550d0eade.jpg  \n",
            " extracting: train/paper/paper07-059_png_jpg.rf.d05e060aca2a3760c1f63e639e08e893.jpg  \n",
            " extracting: train/paper/paper07-061_png_jpg.rf.410a21c018e69ff1e4a8428a9ff184a8.jpg  \n",
            " extracting: train/paper/paper07-062_png_jpg.rf.a649602e77ae8d66eb17b8c08e16f6f1.jpg  \n",
            " extracting: train/paper/paper07-073_png_jpg.rf.b025650a885294c6707f69f9be2fe838.jpg  \n",
            " extracting: train/paper/paper07-083_png_jpg.rf.b8521cda8dbbfa53fe381f1a01bb256b.jpg  \n",
            " extracting: train/paper/paper07-086_png_jpg.rf.d27f681909dfe7d348bc4ead90dd3851.jpg  \n",
            " extracting: train/paper/paper07-088_png_jpg.rf.27fdf1c38286e12ac89826047c3c0520.jpg  \n",
            " extracting: train/paper/paper07-089_png_jpg.rf.faaabcb068c546e5508041bd9d926584.jpg  \n",
            " extracting: train/paper/paper07-095_png_jpg.rf.ecc2dd29661aabfedc5458e20d4005cb.jpg  \n",
            " extracting: train/paper/paper07-104_png_jpg.rf.45269b270ef6fc9bcb4d7c72bb0e720f.jpg  \n",
            " extracting: train/paper/paper07-111_png_jpg.rf.c2ded4c17f2f6a5bafa53c298cd343ff.jpg  \n",
            " extracting: train/paper/paper2_png_jpg.rf.34414994efa0932be3ef8db9e8b0ed4b.jpg  \n",
            " extracting: train/paper/testpaper01-01_png_jpg.rf.f6b34eb4c5f50b3291ec437bda89397e.jpg  \n",
            " extracting: train/paper/testpaper01-03_png_jpg.rf.fb6fcdcba0f4154adb8107290adc0e1a.jpg  \n",
            " extracting: train/paper/testpaper01-05_png_jpg.rf.c81c43158c9d89d4e9221ecc6fa02c0c.jpg  \n",
            " extracting: train/paper/testpaper01-07_png_jpg.rf.3315988a5a5e162713f36da832d7082f.jpg  \n",
            " extracting: train/paper/testpaper01-08_png_jpg.rf.279673694303e46abd4945c643d29fa7.jpg  \n",
            " extracting: train/paper/testpaper01-09_png_jpg.rf.ce580d188fef828bbc451b4fb0148a58.jpg  \n",
            " extracting: train/paper/testpaper01-10_png_jpg.rf.ebf347f78fad60c7bd4c92fe3c05fcd5.jpg  \n",
            " extracting: train/paper/testpaper01-11_png_jpg.rf.ade93be3b082a9d78a77c520a3aa45cb.jpg  \n",
            " extracting: train/paper/testpaper01-12_png_jpg.rf.c02295d8eca5dac1318aebeadae3c495.jpg  \n",
            " extracting: train/paper/testpaper01-13_png_jpg.rf.61fe3ea36ef7437d8a1f6bdc97ce73fe.jpg  \n",
            " extracting: train/paper/testpaper01-14_png_jpg.rf.cc7571f953a385374b0e4ead9a301158.jpg  \n",
            " extracting: train/paper/testpaper01-18_png_jpg.rf.aaff614b7361d4677ea92d0ea7389455.jpg  \n",
            " extracting: train/paper/testpaper01-19_png_jpg.rf.8c0c9930b8b86fddc5fe7b77b86c1e08.jpg  \n",
            " extracting: train/paper/testpaper01-20_png_jpg.rf.3f7880265eeac9c89258721790dbe993.jpg  \n",
            " extracting: train/paper/testpaper01-21_png_jpg.rf.e424b3b4270162f3d12794f0d10b70a7.jpg  \n",
            " extracting: train/paper/testpaper01-22_png_jpg.rf.2107fc9088a8914ea9169c36a31d06c2.jpg  \n",
            " extracting: train/paper/testpaper01-23_png_jpg.rf.c9e5aa16b3f4dbbfa5fbaa814125b3a3.jpg  \n",
            " extracting: train/paper/testpaper01-24_png_jpg.rf.545f4d794417b92394145c816bef5804.jpg  \n",
            " extracting: train/paper/testpaper01-25_png_jpg.rf.4dc0a269c822e1e68639d7cc89cf3237.jpg  \n",
            " extracting: train/paper/testpaper01-26_png_jpg.rf.55136e6bf9ca649e38c5e52f5f6f2449.jpg  \n",
            " extracting: train/paper/testpaper01-27_png_jpg.rf.b587476bb054d59b98f0df1aa3a40ae2.jpg  \n",
            " extracting: train/paper/testpaper01-28_png_jpg.rf.90b6964ea67b8b8bd4185c490b43b605.jpg  \n",
            " extracting: train/paper/testpaper01-30_png_jpg.rf.f739b9306a3d64150b46ec65f0bf34a4.jpg  \n",
            " extracting: train/paper/testpaper02-00_png_jpg.rf.1aca8b16396c67572c6c940536d2c48e.jpg  \n",
            " extracting: train/paper/testpaper02-01_png_jpg.rf.6be94c8403e8a0e258c65411ba6ebd8b.jpg  \n",
            " extracting: train/paper/testpaper02-03_png_jpg.rf.ab5f5d0a7f3d7d0d7b54f348dc6220d3.jpg  \n",
            " extracting: train/paper/testpaper02-04_png_jpg.rf.58e31fba543dac6d965d8a995423217c.jpg  \n",
            " extracting: train/paper/testpaper02-06_png_jpg.rf.b8124726427af8957db466af51243764.jpg  \n",
            " extracting: train/paper/testpaper02-07_png_jpg.rf.9e8fa54dc31104f9aca89926530c6641.jpg  \n",
            " extracting: train/paper/testpaper02-08_png_jpg.rf.40842d0aa32b3b07f894d10595a2cafd.jpg  \n",
            " extracting: train/paper/testpaper02-09_png_jpg.rf.88cbba54b9a3bfcf5895c8e12bb425a5.jpg  \n",
            " extracting: train/paper/testpaper02-10_png_jpg.rf.5c1fc4527eb7b5058aefcbea93e467b5.jpg  \n",
            " extracting: train/paper/testpaper02-12_png_jpg.rf.bf08a5606888c12a0214382ac8eafdea.jpg  \n",
            " extracting: train/paper/testpaper02-16_png_jpg.rf.761ba4608c616ee36906f6f7fe7b7ced.jpg  \n",
            " extracting: train/paper/testpaper02-17_png_jpg.rf.b7ccdda6619609be007448ad2ceb3bc7.jpg  \n",
            " extracting: train/paper/testpaper02-19_png_jpg.rf.6eac8735e0ec1492a5c6dd690ddef195.jpg  \n",
            " extracting: train/paper/testpaper02-21_png_jpg.rf.7f2b3f3e6284a7404b99744751c0c596.jpg  \n",
            " extracting: train/paper/testpaper02-25_png_jpg.rf.69885690b7498336aaae74287a2ccf55.jpg  \n",
            " extracting: train/paper/testpaper02-27_png_jpg.rf.0ac736a94f0619410441f0fe7abc368d.jpg  \n",
            " extracting: train/paper/testpaper02-28_png_jpg.rf.14bb28636405817835a4828377fb456d.jpg  \n",
            " extracting: train/paper/testpaper02-30_png_jpg.rf.afb23d0892f917b5cc93bb76ac2b10b2.jpg  \n",
            " extracting: train/paper/testpaper03-01_png_jpg.rf.0ec509369a64d54fe38dbae8ccfc56c8.jpg  \n",
            " extracting: train/paper/testpaper03-02_png_jpg.rf.f44b8ed71373d6f7b9394fe49d55f942.jpg  \n",
            " extracting: train/paper/testpaper03-04_png_jpg.rf.7a0b4adaf4efaed499e8df9ca5a27c91.jpg  \n",
            " extracting: train/paper/testpaper03-05_png_jpg.rf.ad97bef1312d1f3ccc6f16cbe672d94d.jpg  \n",
            " extracting: train/paper/testpaper03-06_png_jpg.rf.8e3aae62ee5c0d5f39223a0d0be58509.jpg  \n",
            " extracting: train/paper/testpaper03-08_png_jpg.rf.35be9adf41bb7db865277f37112dffaf.jpg  \n",
            " extracting: train/paper/testpaper03-10_png_jpg.rf.b0d2155093b83b74f4ae3d7e0fd5380a.jpg  \n",
            " extracting: train/paper/testpaper03-12_png_jpg.rf.912f2b8fcc903084c1acf7634f02b60e.jpg  \n",
            " extracting: train/paper/testpaper03-13_png_jpg.rf.64c09d128c4a63871de96f65f9b52b7b.jpg  \n",
            " extracting: train/paper/testpaper03-14_png_jpg.rf.8300678baa3fbd85a221996fe22e2257.jpg  \n",
            " extracting: train/paper/testpaper03-15_png_jpg.rf.8f5f512de960518c8b51d17044287911.jpg  \n",
            " extracting: train/paper/testpaper03-16_png_jpg.rf.aa5ac2091073c61985dc47a9399acaa9.jpg  \n",
            " extracting: train/paper/testpaper03-17_png_jpg.rf.1bccb6b04df1fdcb3ef0f660697b433e.jpg  \n",
            " extracting: train/paper/testpaper03-19_png_jpg.rf.affcee280fc0088169ca07753bae229f.jpg  \n",
            " extracting: train/paper/testpaper03-20_png_jpg.rf.3c4efb3433967e25d2b5d4966daeb486.jpg  \n",
            " extracting: train/paper/testpaper03-21_png_jpg.rf.3b054eaca9d9fa8703aa74c9f429e28c.jpg  \n",
            " extracting: train/paper/testpaper03-22_png_jpg.rf.faa97ba4a63e6a8df3e774bad95e1b12.jpg  \n",
            " extracting: train/paper/testpaper03-23_png_jpg.rf.70a00c1b020cc3c2ecbabf85e2e6c816.jpg  \n",
            " extracting: train/paper/testpaper03-25_png_jpg.rf.a8383e3edea130bd7c9ae81b1af8ce51.jpg  \n",
            " extracting: train/paper/testpaper03-26_png_jpg.rf.a6d9176a72ba33aa541d0520b70f84f5.jpg  \n",
            " extracting: train/paper/testpaper03-27_png_jpg.rf.bb75be841d095acbfd1a482b5e8ca9f3.jpg  \n",
            " extracting: train/paper/testpaper03-28_png_jpg.rf.eb74931fbfb8c147f075eaa9fe94adaa.jpg  \n",
            " extracting: train/paper/testpaper03-30_png_jpg.rf.7bd01776afaf17dc6f10a1a3abea2d9f.jpg  \n",
            " extracting: train/paper/testpaper04-00_png_jpg.rf.5d649cf80119593c82aed92fb99cbf61.jpg  \n",
            " extracting: train/paper/testpaper04-01_png_jpg.rf.18cfb4d7fc398ac1c3cb128c08d6d976.jpg  \n",
            " extracting: train/paper/testpaper04-03_png_jpg.rf.9829f923b50129370d3379e3fd1b1f92.jpg  \n",
            " extracting: train/paper/testpaper04-04_png_jpg.rf.84512e74fd1e4a401c34bb24168ffff4.jpg  \n",
            " extracting: train/paper/testpaper04-05_png_jpg.rf.74aa91a130b0b8625d4ba334e713999f.jpg  \n",
            " extracting: train/paper/testpaper04-06_png_jpg.rf.c3223194bfceed900c56e9c33700641b.jpg  \n",
            " extracting: train/paper/testpaper04-08_png_jpg.rf.9a5a0281dcb1a3f90ccf83eb2eee7d9b.jpg  \n",
            " extracting: train/paper/testpaper04-10_png_jpg.rf.03dcae4567e0e72e2eeed15d265517f3.jpg  \n",
            " extracting: train/paper/testpaper04-11_png_jpg.rf.a130638e6880a3b8a0c16a2308a4ff3c.jpg  \n",
            " extracting: train/paper/testpaper04-12_png_jpg.rf.1d56d627262c1011c1219b4cd74116b8.jpg  \n",
            " extracting: train/paper/testpaper04-13_png_jpg.rf.1deb9694f6a1080c5edf1da8422e743c.jpg  \n",
            " extracting: train/paper/testpaper04-14_png_jpg.rf.138d6ba7266d0e9dab44f390da445454.jpg  \n",
            " extracting: train/paper/testpaper04-15_png_jpg.rf.24e2f1b96f7a7c32888bed76f1834db8.jpg  \n",
            " extracting: train/paper/testpaper04-16_png_jpg.rf.ec72f8abd7bff1a4a3710d5b170662eb.jpg  \n",
            " extracting: train/paper/testpaper04-17_png_jpg.rf.89fa6b8a8ff2c397ff1370caec921001.jpg  \n",
            " extracting: train/paper/testpaper04-18_png_jpg.rf.00035fba561e6da7593b9f8fb48790b2.jpg  \n",
            " extracting: train/paper/testpaper04-24_png_jpg.rf.6e3da7a1dd70dc37c79c5b5da8549023.jpg  \n",
            " extracting: train/paper/testpaper04-25_png_jpg.rf.9c62dfa8135f0e390df4f3d050b22975.jpg  \n",
            " extracting: train/paper/testpaper04-26_png_jpg.rf.94c9ecdd7b3da10786975b20077653c7.jpg  \n",
            " extracting: train/paper/testpaper04-27_png_jpg.rf.af61b4d879ae00c252f3f8eb3aceb8ae.jpg  \n",
            " extracting: train/paper/testpaper04-29_png_jpg.rf.0dd2b069603ec18d9be4400a95120759.jpg  \n",
            "   creating: train/rock/\n",
            " extracting: train/rock/rock-hires2_png_jpg.rf.82e422f70e62c8a8fb08ef17f8aacaf8.jpg  \n",
            " extracting: train/rock/rock01-013_png_jpg.rf.23ca3399c7ec977b4e081e5c65030ae6.jpg  \n",
            " extracting: train/rock/rock01-044_png_jpg.rf.8e6c131ade03bba34cd172227dc8e1e5.jpg  \n",
            " extracting: train/rock/rock01-056_png_jpg.rf.958e514d7ed729bfdc2b19430fb3cc93.jpg  \n",
            " extracting: train/rock/rock01-059_png_jpg.rf.d5d8b839622a2c3fb648339e44f47e59.jpg  \n",
            " extracting: train/rock/rock01-066_png_jpg.rf.0b3a5dc4349cc97e4a6b21e064038b34.jpg  \n",
            " extracting: train/rock/rock01-073_png_jpg.rf.7602eea1a2f2f821bbbb60751bce6e0a.jpg  \n",
            " extracting: train/rock/rock01-078_png_jpg.rf.faef961ab818038ca15aeb42de853e7c.jpg  \n",
            " extracting: train/rock/rock01-079_png_jpg.rf.65484bab3bf2d00074b5f39baf733060.jpg  \n",
            " extracting: train/rock/rock01-085_png_jpg.rf.8908f19e5e589ba4eca271adc07f1c9e.jpg  \n",
            " extracting: train/rock/rock01-087_png_jpg.rf.0f8b817e35dc5be0a1e68facba2e9ff6.jpg  \n",
            " extracting: train/rock/rock01-092_png_jpg.rf.217be8331ea88a8492633dba862a6aef.jpg  \n",
            " extracting: train/rock/rock01-095_png_jpg.rf.55ea02df8c5a93fb807463b584e6b26d.jpg  \n",
            " extracting: train/rock/rock01-096_png_jpg.rf.19fc0ecddc31ffe29dc94f6c01820f50.jpg  \n",
            " extracting: train/rock/rock01-097_png_jpg.rf.4c4a09c8e21e1fe151ef10604d618386.jpg  \n",
            " extracting: train/rock/rock01-103_png_jpg.rf.40ee2a16103d3ed7589ba8c0700adcb9.jpg  \n",
            " extracting: train/rock/rock01-106_png_jpg.rf.1127e1d10da6e713ac26095c8ade764d.jpg  \n",
            " extracting: train/rock/rock02-021_png_jpg.rf.346e6e8108b89e1c01b153294fe314e1.jpg  \n",
            " extracting: train/rock/rock02-033_png_jpg.rf.969fb13a712426aa8a24f287dff472a2.jpg  \n",
            " extracting: train/rock/rock02-054_png_jpg.rf.eb2f846f5cdecca063c1cdd3a052037b.jpg  \n",
            " extracting: train/rock/rock02-074_png_jpg.rf.31fed31881c763370882ff39c7c6b661.jpg  \n",
            " extracting: train/rock/rock02-077_png_jpg.rf.8e12bd524d22248085a84c1162f7ea1d.jpg  \n",
            " extracting: train/rock/rock02-087_png_jpg.rf.8b6af8f5ed3e107480d1c0954896999d.jpg  \n",
            " extracting: train/rock/rock02-089_png_jpg.rf.2e58be3c135fae9f1cf273cf50324fea.jpg  \n",
            " extracting: train/rock/rock02-090_png_jpg.rf.aaa262126c27109be760c35d123414d8.jpg  \n",
            " extracting: train/rock/rock02-094_png_jpg.rf.24ccbf858fed7cbb5f67b43b7b42f59e.jpg  \n",
            " extracting: train/rock/rock02-108_png_jpg.rf.3aa96c7f111791c373a9493ff9b417e4.jpg  \n",
            " extracting: train/rock/rock02-115_png_jpg.rf.a74199c37718fc7f9b4a7a84c1ac4794.jpg  \n",
            " extracting: train/rock/rock02-117_png_jpg.rf.8fa392cd612e98c907804543a7f771f3.jpg  \n",
            " extracting: train/rock/rock03-021_png_jpg.rf.b2903db3e77363a961572bac26ea90f7.jpg  \n",
            " extracting: train/rock/rock03-026_png_jpg.rf.e5351289b01f64206d842a6461256961.jpg  \n",
            " extracting: train/rock/rock03-034_png_jpg.rf.6b8f66954804bfe38c3bfb56ee4cf397.jpg  \n",
            " extracting: train/rock/rock03-036_png_jpg.rf.2793d54e288cc6fdcac19785a3d782ce.jpg  \n",
            " extracting: train/rock/rock03-037_png_jpg.rf.f9eb612c9c312604cef86821b321eb04.jpg  \n",
            " extracting: train/rock/rock03-048_png_jpg.rf.f83ee21bc0cb8b48fa563bc565b114fc.jpg  \n",
            " extracting: train/rock/rock03-069_png_jpg.rf.42c26ace4369f005360b8ec58b03ec1c.jpg  \n",
            " extracting: train/rock/rock03-083_png_jpg.rf.9a1e0f178e89b610bdc8988c8682edf4.jpg  \n",
            " extracting: train/rock/rock03-085_png_jpg.rf.f44049d25af8c0678de188b24d3ebb5b.jpg  \n",
            " extracting: train/rock/rock03-094_png_jpg.rf.3dc63a34c1139b8cbee1f22cb160a0d0.jpg  \n",
            " extracting: train/rock/rock03-119_png_jpg.rf.2e9fdd4ece3dd680e00acf29196fbb69.jpg  \n",
            " extracting: train/rock/rock04-001_png_jpg.rf.4fb767ecf318e7d999c516c77ee1a2b8.jpg  \n",
            " extracting: train/rock/rock04-007_png_jpg.rf.c4e5a79f2b1a92ae40132a3abfc8a11a.jpg  \n",
            " extracting: train/rock/rock04-019_png_jpg.rf.60ccbb4c72ceac3091e84c3f3e8018c2.jpg  \n",
            " extracting: train/rock/rock04-023_png_jpg.rf.c7c74fde57c5a12b0297178b6642f7a3.jpg  \n",
            " extracting: train/rock/rock04-025_png_jpg.rf.7fb3e02337cd8943b83825ec4e286554.jpg  \n",
            " extracting: train/rock/rock04-027_png_jpg.rf.4365f0ccedaa7ece303947f589ad2290.jpg  \n",
            " extracting: train/rock/rock04-037_png_jpg.rf.b5eb51b874754cd972a7186ecbda7c39.jpg  \n",
            " extracting: train/rock/rock04-070_png_jpg.rf.dcfa085cc8549a98a8bbcd07bfd491bd.jpg  \n",
            " extracting: train/rock/rock04-077_png_jpg.rf.d860f36f2070e27f4fec4365657d7acd.jpg  \n",
            " extracting: train/rock/rock04-094_png_jpg.rf.bf087118b1b4e9c3dd5088adbe35cfea.jpg  \n",
            " extracting: train/rock/rock04-106_png_jpg.rf.30a6350cbe31707ca25bb493127e44d1.jpg  \n",
            " extracting: train/rock/rock04-109_png_jpg.rf.006dea48cb3f771944ea9ce8c87941ab.jpg  \n",
            " extracting: train/rock/rock04-113_png_jpg.rf.7152abd686364d3ab49378db4a611740.jpg  \n",
            " extracting: train/rock/rock05ck01-005_png_jpg.rf.0572b47da231345e3b70d80f8ba63740.jpg  \n",
            " extracting: train/rock/rock05ck01-024_png_jpg.rf.c95bf8ad12ffab3219aa80d76f309bf0.jpg  \n",
            " extracting: train/rock/rock05ck01-032_png_jpg.rf.bf09cb61a92c24c56278763925210c98.jpg  \n",
            " extracting: train/rock/rock05ck01-054_png_jpg.rf.3b0b28946fac632bc3c1e0fa627f2146.jpg  \n",
            " extracting: train/rock/rock05ck01-063_png_jpg.rf.e8a5e94e1a75d459957321b29bd69a45.jpg  \n",
            " extracting: train/rock/rock05ck01-064_png_jpg.rf.93168eb4ed20c57e2116ff222a14750a.jpg  \n",
            " extracting: train/rock/rock05ck01-072_png_jpg.rf.2b633547ab0955f6694a048b8598f336.jpg  \n",
            " extracting: train/rock/rock05ck01-087_png_jpg.rf.5569138fb2681b069ace19bb2ab2b1f9.jpg  \n",
            " extracting: train/rock/rock05ck01-089_png_jpg.rf.721bdcaf7b74f6d05fcc9edfbdced702.jpg  \n",
            " extracting: train/rock/rock05ck01-096_png_jpg.rf.30209547119c9769774bafaae30585f6.jpg  \n",
            " extracting: train/rock/rock05ck01-100_png_jpg.rf.eb9642deca32a8b1e4ef450bfb6cfb3f.jpg  \n",
            " extracting: train/rock/rock05ck01-103_png_jpg.rf.b43099bb2a934a3db03baa4f3d4a746a.jpg  \n",
            " extracting: train/rock/rock05ck01-106_png_jpg.rf.8f3b7f3e3886d48b09a839512d547825.jpg  \n",
            " extracting: train/rock/rock05ck01-109_png_jpg.rf.64d6f08b9d7b4951e639285694f3fb83.jpg  \n",
            " extracting: train/rock/rock05ck01-112_png_jpg.rf.796738ddf5f0f12aae35658ec4b5fff1.jpg  \n",
            " extracting: train/rock/rock05ck01-114_png_jpg.rf.52603f4b6f092147e6ed256983a9b626.jpg  \n",
            " extracting: train/rock/rock06ck02-004_png_jpg.rf.45e75d5ccb32c2c7a819bd8d3d85db80.jpg  \n",
            " extracting: train/rock/rock06ck02-008_png_jpg.rf.3b40e42fbb2124ed29d6a5e1ddf2ecaa.jpg  \n",
            " extracting: train/rock/rock06ck02-011_png_jpg.rf.0395c190c1f4dc21bda701871135c262.jpg  \n",
            " extracting: train/rock/rock06ck02-013_png_jpg.rf.9bd5cbae4dcc6fb89b212e64de22bcf1.jpg  \n",
            " extracting: train/rock/rock06ck02-015_png_jpg.rf.260ef021d19dca8bdbb6055651123de5.jpg  \n",
            " extracting: train/rock/rock06ck02-018_png_jpg.rf.e1afbda72ae1a1851e34c3a9b845827e.jpg  \n",
            " extracting: train/rock/rock06ck02-020_png_jpg.rf.880d012a9ec69f5133aec524263b09d1.jpg  \n",
            " extracting: train/rock/rock06ck02-023_png_jpg.rf.00921d17144edd7ac3167f4b4477cc9b.jpg  \n",
            " extracting: train/rock/rock06ck02-041_png_jpg.rf.5146fb84b0562b2053ac92e49191321d.jpg  \n",
            " extracting: train/rock/rock06ck02-062_png_jpg.rf.7bd17f1142cc54a5343bf1ac3adedada.jpg  \n",
            " extracting: train/rock/rock06ck02-067_png_jpg.rf.6fed120f3664891142780150510898c8.jpg  \n",
            " extracting: train/rock/rock06ck02-079_png_jpg.rf.5e3299ccea7eca47527d09be84c7a8fe.jpg  \n",
            " extracting: train/rock/rock06ck02-092_png_jpg.rf.e7eacc891e946d02e73a1ab32e59bf51.jpg  \n",
            " extracting: train/rock/rock06ck02-093_png_jpg.rf.a054b796be33463b6b6d8a0f31cd6597.jpg  \n",
            " extracting: train/rock/rock06ck02-101_png_jpg.rf.6d5b196b706bacb8c17b9c04823f8262.jpg  \n",
            " extracting: train/rock/rock06ck02-103_png_jpg.rf.02eefe04de095f34d742280711dbaa6e.jpg  \n",
            " extracting: train/rock/rock06ck02-109_png_jpg.rf.5b1c40ade96d6a117e67520c6e19e5ae.jpg  \n",
            " extracting: train/rock/rock06ck02-112_png_jpg.rf.2ecd5e16c02c34c1d384977f286d42ba.jpg  \n",
            " extracting: train/rock/rock06ck02-117_png_jpg.rf.3d5b1c656415e99b2d7304d405ce7ac0.jpg  \n",
            " extracting: train/rock/rock06ck02-118_png_jpg.rf.96e8405ed510b253b8981653280a4f25.jpg  \n",
            " extracting: train/rock/rock07-k03-002_png_jpg.rf.8eb31723a8675fd0e71cd60543f87624.jpg  \n",
            " extracting: train/rock/rock07-k03-012_png_jpg.rf.9bbd2bb2c562cfc38fce734174262b8d.jpg  \n",
            " extracting: train/rock/rock07-k03-014_png_jpg.rf.86fa271b0fa8e6c86381628762a6b5dc.jpg  \n",
            " extracting: train/rock/rock07-k03-015_png_jpg.rf.ae5a45ef1606132c8d912a578598c4e2.jpg  \n",
            " extracting: train/rock/rock07-k03-020_png_jpg.rf.286caa61bd97c274bcb3e6c51ae86e82.jpg  \n",
            " extracting: train/rock/rock07-k03-023_png_jpg.rf.f87538af8c183e37e39bfcebcaca974d.jpg  \n",
            " extracting: train/rock/rock07-k03-025_png_jpg.rf.bb9828fc785dcd94ebc168c3d9acbf53.jpg  \n",
            " extracting: train/rock/rock07-k03-031_png_jpg.rf.0b080cf5b6dda6ddb8e6c3f93aad8adf.jpg  \n",
            " extracting: train/rock/rock07-k03-032_png_jpg.rf.e22c3f0055ae17e86c7a065426cc19f1.jpg  \n",
            " extracting: train/rock/rock07-k03-035_png_jpg.rf.1e2f559f8e29c339f0589d822f4ec671.jpg  \n",
            " extracting: train/rock/rock07-k03-036_png_jpg.rf.befe3b42a5b20db20c70c40af8df275b.jpg  \n",
            " extracting: train/rock/rock07-k03-038_png_jpg.rf.97ad86e5c298c65057616a9db56c9121.jpg  \n",
            " extracting: train/rock/rock07-k03-045_png_jpg.rf.557de33b399b34b18eca20307b158243.jpg  \n",
            " extracting: train/rock/rock07-k03-048_png_jpg.rf.cde8803cadb5d8e4ea869485248bc3fd.jpg  \n",
            " extracting: train/rock/rock07-k03-052_png_jpg.rf.4f262cc8ade7997a9d5e300119d1c844.jpg  \n",
            " extracting: train/rock/rock07-k03-064_png_jpg.rf.16b7e392c4ec40685800c22bf4340544.jpg  \n",
            " extracting: train/rock/rock07-k03-066_png_jpg.rf.f91dcf37deaf30de50b9be6048fb4230.jpg  \n",
            " extracting: train/rock/rock07-k03-069_png_jpg.rf.24cca03ffa1c0ea51fc4e43895084d2a.jpg  \n",
            " extracting: train/rock/rock07-k03-071_png_jpg.rf.74a3be9a641f3326aa7797a95096d8b5.jpg  \n",
            " extracting: train/rock/rock07-k03-088_png_jpg.rf.33446180bba25711ccf69e052485bfab.jpg  \n",
            " extracting: train/rock/rock07-k03-091_png_jpg.rf.8df7cd1992400e4364091513ea134c8d.jpg  \n",
            " extracting: train/rock/rock07-k03-094_png_jpg.rf.7fa93958d1f61d2b2c780a501dceba33.jpg  \n",
            " extracting: train/rock/rock07-k03-095_png_jpg.rf.82783f46c01608d70dd5efa15cacac07.jpg  \n",
            " extracting: train/rock/rock07-k03-096_png_jpg.rf.f5f7e855ae66b32b4edef88e7498987d.jpg  \n",
            " extracting: train/rock/rock07-k03-108_png_jpg.rf.0015f7d5d2ebce18af57186c5f009d0a.jpg  \n",
            " extracting: train/rock/rock1_png_jpg.rf.0ffe6caa852b621ff758b0b07f349683.jpg  \n",
            " extracting: train/rock/rock2_png_jpg.rf.0b6835e7ba9ef2226f279a0ac63a279d.jpg  \n",
            " extracting: train/rock/rock3_png_jpg.rf.bcad257de2913ee05cf50a1fe3ab1aa2.jpg  \n",
            " extracting: train/rock/rock4_png_jpg.rf.d79c78e64de300be77bf7dcf5b5f8cbb.jpg  \n",
            " extracting: train/rock/rock6_png_jpg.rf.d94ff3c53e59c33469b8bae7983e7037.jpg  \n",
            " extracting: train/rock/rock7_png_jpg.rf.7074284037b298aaf01a4aa08c3acf95.jpg  \n",
            " extracting: train/rock/rock8_png_jpg.rf.882d40e3ef235f680f7a9c5aa1d3c14b.jpg  \n",
            " extracting: train/rock/rock9_png_jpg.rf.55409a4436faeff8e8102d77c7a582e2.jpg  \n",
            " extracting: train/rock/testrock01-00_png_jpg.rf.23ac64377c02088605703092a50ac765.jpg  \n",
            " extracting: train/rock/testrock01-02_png_jpg.rf.aaf3fe929ad8e392798c94cabb60a29c.jpg  \n",
            " extracting: train/rock/testrock01-03_png_jpg.rf.14fdbd924aa44b5742f09d325effbab8.jpg  \n",
            " extracting: train/rock/testrock01-04_png_jpg.rf.10cd32952cda76c7b9fee7be4e4d9f2f.jpg  \n",
            " extracting: train/rock/testrock01-05_png_jpg.rf.225a396b326fff14f2b99fcba085f2f1.jpg  \n",
            " extracting: train/rock/testrock01-07_png_jpg.rf.aa3bfdcb183e5c0d95593fb8f9035cf0.jpg  \n",
            " extracting: train/rock/testrock01-09_png_jpg.rf.f224d7706e6320b1827fd2c6066e0236.jpg  \n",
            " extracting: train/rock/testrock01-11_png_jpg.rf.79f55ea4de7a14e68995d4965d5792de.jpg  \n",
            " extracting: train/rock/testrock01-12_png_jpg.rf.7499cbafbd9a76ce49a262ab76c5f904.jpg  \n",
            " extracting: train/rock/testrock01-13_png_jpg.rf.a972696fdd828dc169c542988c3857b9.jpg  \n",
            " extracting: train/rock/testrock01-14_png_jpg.rf.cdd7e039d55755707733aa06c8baac5c.jpg  \n",
            " extracting: train/rock/testrock01-15_png_jpg.rf.e08c89997a6038cd8d42ed0680ad5c8f.jpg  \n",
            " extracting: train/rock/testrock01-16_png_jpg.rf.d104e1102110045772a82ce09e824768.jpg  \n",
            " extracting: train/rock/testrock01-17_png_jpg.rf.35932503a876bf88ac7907f2c910061b.jpg  \n",
            " extracting: train/rock/testrock01-18_png_jpg.rf.6e9ba4c2a87dd33cb93b8788e09af6f8.jpg  \n",
            " extracting: train/rock/testrock01-19_png_jpg.rf.7d64347b1b405144c5496666f3597817.jpg  \n",
            " extracting: train/rock/testrock01-20_png_jpg.rf.2e706dfd23aead7bc0e6e9405f6836b9.jpg  \n",
            " extracting: train/rock/testrock01-21_png_jpg.rf.69d5e7f6c0e69aaa34021523b0956487.jpg  \n",
            " extracting: train/rock/testrock01-22_png_jpg.rf.b9b435b4dc5670e88deb8a08b2c029fc.jpg  \n",
            " extracting: train/rock/testrock01-23_png_jpg.rf.6b9d8e369de7870f921f30b2a13b98e7.jpg  \n",
            " extracting: train/rock/testrock01-24_png_jpg.rf.201b9f5db69bd7398e409648143e95aa.jpg  \n",
            " extracting: train/rock/testrock01-28_png_jpg.rf.9317b98c21fb3c1fe01a8c02fa6cfd5e.jpg  \n",
            " extracting: train/rock/testrock01-29_png_jpg.rf.23dcf6dfe32cc342d2ac8bde49dedcca.jpg  \n",
            " extracting: train/rock/testrock01-30_png_jpg.rf.ba7fb550e6d01c935bdd44202b3f42dc.jpg  \n",
            " extracting: train/rock/testrock02-00_png_jpg.rf.08a1f9b621fca9144ad68bf2349a6ded.jpg  \n",
            " extracting: train/rock/testrock02-02_png_jpg.rf.faff0688fa1e047edf6498e2b183f02a.jpg  \n",
            " extracting: train/rock/testrock02-03_png_jpg.rf.e539e647259b9488429e38924170e125.jpg  \n",
            " extracting: train/rock/testrock02-04_png_jpg.rf.c6af07d1de714f227b54e2511f33930e.jpg  \n",
            " extracting: train/rock/testrock02-05_png_jpg.rf.c1ff75d3543017a2e45fe0c819babe2b.jpg  \n",
            " extracting: train/rock/testrock02-07_png_jpg.rf.4c20a44e886b662dc4d2a9dc36af3f45.jpg  \n",
            " extracting: train/rock/testrock02-08_png_jpg.rf.5127ada797dab5f0876e532aade0d0f9.jpg  \n",
            " extracting: train/rock/testrock02-09_png_jpg.rf.7ea2308b0af1c903553159804f180061.jpg  \n",
            " extracting: train/rock/testrock02-11_png_jpg.rf.dee2354e7230df3d6501a7fbdcbea223.jpg  \n",
            " extracting: train/rock/testrock02-12_png_jpg.rf.7698559c5a4ad12fbf0e5de5b75e68f0.jpg  \n",
            " extracting: train/rock/testrock02-14_png_jpg.rf.71c2d7edb8cbfcf2166b88082193f61b.jpg  \n",
            " extracting: train/rock/testrock02-16_png_jpg.rf.288949db9783f541307e8900b4cd5217.jpg  \n",
            " extracting: train/rock/testrock02-17_png_jpg.rf.f6939ffa71168dbcd49885ec1815134f.jpg  \n",
            " extracting: train/rock/testrock02-18_png_jpg.rf.438826ee1a0ddbdc6b35242f394b0b87.jpg  \n",
            " extracting: train/rock/testrock02-19_png_jpg.rf.8108a7eb6e559b3d489508b2736a2f1f.jpg  \n",
            " extracting: train/rock/testrock02-20_png_jpg.rf.a1e5392b5cf81892985454c556e0869a.jpg  \n",
            " extracting: train/rock/testrock02-22_png_jpg.rf.1bcd3c3ef814d6a28ab8a5c4bd268c84.jpg  \n",
            " extracting: train/rock/testrock02-25_png_jpg.rf.cc25c12b225cbd48142141cc212cb1bf.jpg  \n",
            " extracting: train/rock/testrock02-29_png_jpg.rf.60ec0bdb6fdb7f96e6648c66d2d846d2.jpg  \n",
            " extracting: train/rock/testrock02-30_png_jpg.rf.a956c872dc86bc5436622a8476735aaf.jpg  \n",
            " extracting: train/rock/testrock03-01_png_jpg.rf.6204aedb1693b5a20baf1a693e2fd729.jpg  \n",
            " extracting: train/rock/testrock03-02_png_jpg.rf.001b0cd948a6100890fae1afe5949139.jpg  \n",
            " extracting: train/rock/testrock03-03_png_jpg.rf.463f337b9505b4780c7cb3da08abc25b.jpg  \n",
            " extracting: train/rock/testrock03-04_png_jpg.rf.8fc02d9be97e413e5682fd507e9d9056.jpg  \n",
            " extracting: train/rock/testrock03-05_png_jpg.rf.051d44d78a87beca08657837a1c20941.jpg  \n",
            " extracting: train/rock/testrock03-06_png_jpg.rf.56ff6b3dda8db2a162c2916e0111aab5.jpg  \n",
            " extracting: train/rock/testrock03-07_png_jpg.rf.525965942d3bfb398e4a228e52543fbc.jpg  \n",
            " extracting: train/rock/testrock03-08_png_jpg.rf.4a1251e3a5f85fc88cc4237986d62a35.jpg  \n",
            " extracting: train/rock/testrock03-09_png_jpg.rf.fe0bd569b894a089f05801a7cfa48855.jpg  \n",
            " extracting: train/rock/testrock03-10_png_jpg.rf.19c1caac51f39ca3440c9c66873e54ea.jpg  \n",
            " extracting: train/rock/testrock03-12_png_jpg.rf.98196dd1456842788251b2c5c0c82d87.jpg  \n",
            " extracting: train/rock/testrock03-13_png_jpg.rf.6d5f77df3ad1ddc3301893dc1a348476.jpg  \n",
            " extracting: train/rock/testrock03-14_png_jpg.rf.33093b1218f40f8c834729e8681a2155.jpg  \n",
            " extracting: train/rock/testrock03-16_png_jpg.rf.0bc1ba97ecf06a4bf49c8e522f623a91.jpg  \n",
            " extracting: train/rock/testrock03-17_png_jpg.rf.74f137cf1fb84f2cb25be31f44b353cf.jpg  \n",
            " extracting: train/rock/testrock03-19_png_jpg.rf.2a5019cdfe1bdb16d993cf6f29597708.jpg  \n",
            " extracting: train/rock/testrock03-21_png_jpg.rf.889803cb05a3e14e630b1e8e6d193818.jpg  \n",
            " extracting: train/rock/testrock03-22_png_jpg.rf.a095f1aafcbf532dd67703aa228d9728.jpg  \n",
            " extracting: train/rock/testrock03-23_png_jpg.rf.61b80582720c84497afd31fec300060c.jpg  \n",
            " extracting: train/rock/testrock03-24_png_jpg.rf.7dea35ba8a55ad2f01e9992c152876af.jpg  \n",
            " extracting: train/rock/testrock03-25_png_jpg.rf.df2163accb6e778d05dc7f37f03bed51.jpg  \n",
            " extracting: train/rock/testrock03-28_png_jpg.rf.e5e71f5c12fa84bb1551364e95f0bb23.jpg  \n",
            " extracting: train/rock/testrock03-30_png_jpg.rf.1b60399f2c66e22ae2d08bca47f00f7c.jpg  \n",
            " extracting: train/rock/testrock04-02_png_jpg.rf.35877ace4d52a671762fd73bd31bfbe5.jpg  \n",
            " extracting: train/rock/testrock04-03_png_jpg.rf.00c476821131a2fb1dc6143f82f62fef.jpg  \n",
            " extracting: train/rock/testrock04-04_png_jpg.rf.78327416d170daea75ddfb8374c647d0.jpg  \n",
            " extracting: train/rock/testrock04-05_png_jpg.rf.e4ef4bf30e24cd9ed35c1ef67c1347e6.jpg  \n",
            " extracting: train/rock/testrock04-06_png_jpg.rf.a8b0fd09092f32f42ee75fb6ae9c96b9.jpg  \n",
            " extracting: train/rock/testrock04-09_png_jpg.rf.2fba784747886096fd2fe7baaa7faaa7.jpg  \n",
            " extracting: train/rock/testrock04-10_png_jpg.rf.79664d5f158358df22d325223477848f.jpg  \n",
            " extracting: train/rock/testrock04-12_png_jpg.rf.edc5398f71e799b2dc6cbf41cd39f44e.jpg  \n",
            " extracting: train/rock/testrock04-13_png_jpg.rf.3fb890d4a45dfc2e0fb17316c29121c1.jpg  \n",
            " extracting: train/rock/testrock04-14_png_jpg.rf.326f380fe01aa798f46642b1a10cb5a1.jpg  \n",
            " extracting: train/rock/testrock04-15_png_jpg.rf.2cf1965c25bd99828b99442c62cb74cc.jpg  \n",
            " extracting: train/rock/testrock04-17_png_jpg.rf.5a4fb81a8dfcc8c4ae052b5681904204.jpg  \n",
            " extracting: train/rock/testrock04-18_png_jpg.rf.1aa82abeeaebff792aa35d16c2fd7aea.jpg  \n",
            " extracting: train/rock/testrock04-19_png_jpg.rf.fefe18dabcad44a32c2280be4b9603eb.jpg  \n",
            " extracting: train/rock/testrock04-21_png_jpg.rf.fce95089e7d72b0587a2979793ed531e.jpg  \n",
            " extracting: train/rock/testrock04-22_png_jpg.rf.460bb27f44090504f09bfa51cee88c85.jpg  \n",
            " extracting: train/rock/testrock04-24_png_jpg.rf.70128eeeaacae9d4f67a674ededb8c76.jpg  \n",
            " extracting: train/rock/testrock04-27_png_jpg.rf.3458e0a4242456e7cbcf21ccf7fd1e89.jpg  \n",
            " extracting: train/rock/testrock04-28_png_jpg.rf.5879b3b7a1e77acb162965fe0fc521c3.jpg  \n",
            " extracting: train/rock/testrock04-29_png_jpg.rf.81d2cb2417c387b687e8ff3ad13884ce.jpg  \n",
            " extracting: train/rock/testrock04-30_png_jpg.rf.2469db6961e89be39aad883e664177bd.jpg  \n",
            "   creating: train/scissors/\n",
            " extracting: train/scissors/scissors-hires2_png_jpg.rf.07133cf0322211b310601d3006122ddd.jpg  \n",
            " extracting: train/scissors/scissors01-012_png_jpg.rf.3950e9072cc8936113f6dbc00e901daa.jpg  \n",
            " extracting: train/scissors/scissors01-025_png_jpg.rf.d8d74040b372033343a25da724975fed.jpg  \n",
            " extracting: train/scissors/scissors01-034_png_jpg.rf.5f5652359be763483209a25bd9fc3dcb.jpg  \n",
            " extracting: train/scissors/scissors01-035_png_jpg.rf.c2e54b65c72813727abf330dfd7afb40.jpg  \n",
            " extracting: train/scissors/scissors01-038_png_jpg.rf.3a176564280ee2a89ffa3673df40ec7a.jpg  \n",
            " extracting: train/scissors/scissors01-045_png_jpg.rf.3292c2ccb9a6838f1c08aa61c1f41558.jpg  \n",
            " extracting: train/scissors/scissors01-050_png_jpg.rf.2d9a4df2415541ef016588f6ed79a042.jpg  \n",
            " extracting: train/scissors/scissors01-053_png_jpg.rf.4cf11f61b8cc76c06a1a1659402ea360.jpg  \n",
            " extracting: train/scissors/scissors01-059_png_jpg.rf.6bbce9f1051d0fd7b5c7fe54f9586ffe.jpg  \n",
            " extracting: train/scissors/scissors01-064_png_jpg.rf.2a12fc9998299cffee61b97280f76f0a.jpg  \n",
            " extracting: train/scissors/scissors01-077_png_jpg.rf.e0680ae678aad94909a2797b937ca4e6.jpg  \n",
            " extracting: train/scissors/scissors01-086_png_jpg.rf.633587b73f22ce0c9459997e7e8320f3.jpg  \n",
            " extracting: train/scissors/scissors01-100_png_jpg.rf.51abdce17f0d44e15fd63ae3a5735330.jpg  \n",
            " extracting: train/scissors/scissors01-103_png_jpg.rf.ee58144b9d149c8e36035418be700dba.jpg  \n",
            " extracting: train/scissors/scissors01-118_png_jpg.rf.c1ea80b4441daf246ebaef6088d5ab61.jpg  \n",
            " extracting: train/scissors/scissors02-008_png_jpg.rf.3326d55ff478d3138af42271758498d6.jpg  \n",
            " extracting: train/scissors/scissors02-015_png_jpg.rf.3f773f95fdb353b976a900152e91ba6e.jpg  \n",
            " extracting: train/scissors/scissors02-034_png_jpg.rf.0c4e49f379f4f140bf37a3e0cbaa4420.jpg  \n",
            " extracting: train/scissors/scissors02-039_png_jpg.rf.2beafa975ea4bbed2d12e2e41e347a7a.jpg  \n",
            " extracting: train/scissors/scissors02-040_png_jpg.rf.4fe98a88f34281cf7d3d8613e6ccfeff.jpg  \n",
            " extracting: train/scissors/scissors02-042_png_jpg.rf.aae648f1ddda221ea15ea60c99a0268d.jpg  \n",
            " extracting: train/scissors/scissors02-043_png_jpg.rf.94fb2ef0bbb32c06295ef3585caba490.jpg  \n",
            " extracting: train/scissors/scissors02-044_png_jpg.rf.308bde73e3e5005673ed06de171e4eac.jpg  \n",
            " extracting: train/scissors/scissors02-049_png_jpg.rf.803a975479edaea2ad40cd31df2d4c12.jpg  \n",
            " extracting: train/scissors/scissors02-055_png_jpg.rf.22569d704c91f763d41d9af1a17193c4.jpg  \n",
            " extracting: train/scissors/scissors02-067_png_jpg.rf.91df575c1ee9f499233e8bbefd1eaa9b.jpg  \n",
            " extracting: train/scissors/scissors02-069_png_jpg.rf.dc2909540fe73fd39c915097b9a5f47a.jpg  \n",
            " extracting: train/scissors/scissors02-072_png_jpg.rf.c1706d729bf2327ed3ec44101038b24f.jpg  \n",
            " extracting: train/scissors/scissors02-073_png_jpg.rf.428045f59ddac059c4a6cf713f0ba137.jpg  \n",
            " extracting: train/scissors/scissors02-091_png_jpg.rf.dc824adc2b9bbd40ac07de83a1ea9f6f.jpg  \n",
            " extracting: train/scissors/scissors02-107_png_jpg.rf.1e852a391aae9632676c19b36c45eefb.jpg  \n",
            " extracting: train/scissors/scissors02-112_png_jpg.rf.75bffef727eebe1cc667ff61b4b43134.jpg  \n",
            " extracting: train/scissors/scissors03-006_png_jpg.rf.ba55ab7dd93763d85cbde40a6bd037f5.jpg  \n",
            " extracting: train/scissors/scissors03-012_png_jpg.rf.17c1e9b9803c692bdb0570dfa1cb896c.jpg  \n",
            " extracting: train/scissors/scissors03-017_png_jpg.rf.6245e584b70c69961c0b00d0fb6b6567.jpg  \n",
            " extracting: train/scissors/scissors03-018_png_jpg.rf.102073a74debf6a2bbe2c52143a19187.jpg  \n",
            " extracting: train/scissors/scissors03-025_png_jpg.rf.742d562633bccbed0d0756a5cd61606f.jpg  \n",
            " extracting: train/scissors/scissors03-038_png_jpg.rf.29259998fe23bb2aa95f7e17026a75ed.jpg  \n",
            " extracting: train/scissors/scissors03-049_png_jpg.rf.a3c11bf37757fa7f3b574ad9d3f2bcc0.jpg  \n",
            " extracting: train/scissors/scissors03-050_png_jpg.rf.f2fbf059374a619af24d32a0a2977028.jpg  \n",
            " extracting: train/scissors/scissors03-052_png_jpg.rf.a613ddade11e24bbd0c919c078f2a415.jpg  \n",
            " extracting: train/scissors/scissors03-053_png_jpg.rf.b9948c4087fe87a07346947e53f5fd94.jpg  \n",
            " extracting: train/scissors/scissors03-056_png_jpg.rf.37e84bd2c2a92403a628bd6783a09ba1.jpg  \n",
            " extracting: train/scissors/scissors03-057_png_jpg.rf.75b0f81756396df801e2473d00e4a63e.jpg  \n",
            " extracting: train/scissors/scissors03-064_png_jpg.rf.3ffe9217aa6a5258930a471746217067.jpg  \n",
            " extracting: train/scissors/scissors03-071_png_jpg.rf.63316edf0643a47df0a203656baaa9ee.jpg  \n",
            " extracting: train/scissors/scissors03-077_png_jpg.rf.8a8bbee560cc27b85b6d7843b01dad75.jpg  \n",
            " extracting: train/scissors/scissors03-092_png_jpg.rf.ba1be56d9b24cf87f6aaae828e178252.jpg  \n",
            " extracting: train/scissors/scissors03-093_png_jpg.rf.f93f9673ae40580eb337b3c124ee8414.jpg  \n",
            " extracting: train/scissors/scissors03-096_png_jpg.rf.52b9d9763f8951ca08e47d45e1442744.jpg  \n",
            " extracting: train/scissors/scissors03-099_png_jpg.rf.7663f4c96096f1cbae5a5ec104db5a66.jpg  \n",
            " extracting: train/scissors/scissors04-000_png_jpg.rf.6dae22c9d4bca03aa7c7c85deab1ab3c.jpg  \n",
            " extracting: train/scissors/scissors04-003_png_jpg.rf.a96d3f798ca308c274087b2eb893376d.jpg  \n",
            " extracting: train/scissors/scissors04-007_png_jpg.rf.213511dd2eda36fe0fd3dd8c4bcf75db.jpg  \n",
            " extracting: train/scissors/scissors04-028_png_jpg.rf.260d2c3cfc9aabb322df3bd2a6f9803f.jpg  \n",
            " extracting: train/scissors/scissors04-031_png_jpg.rf.05eea928b7c45e9db5618c394c90dfe5.jpg  \n",
            " extracting: train/scissors/scissors04-032_png_jpg.rf.8440c310c7837fde0b74acec6bcb29c5.jpg  \n",
            " extracting: train/scissors/scissors04-040_png_jpg.rf.27dd932226cc6852a20982caaee4f738.jpg  \n",
            " extracting: train/scissors/scissors04-041_png_jpg.rf.95860eeb3071a8b74b471cec98da7f0e.jpg  \n",
            " extracting: train/scissors/scissors04-043_png_jpg.rf.e1460d978ad8309afdd4fa19ffce8306.jpg  \n",
            " extracting: train/scissors/scissors04-044_png_jpg.rf.18b13c781555ae095f5f0bb1ebbd6ef3.jpg  \n",
            " extracting: train/scissors/scissors04-062_png_jpg.rf.d25f6bd7ee55e3455ebbc41a64b3ecfd.jpg  \n",
            " extracting: train/scissors/scissors04-067_png_jpg.rf.0d53bac88091bea7727c94dd4bfce766.jpg  \n",
            " extracting: train/scissors/scissors04-074_png_jpg.rf.6b59d0b34853664d115fdf4e002c9205.jpg  \n",
            " extracting: train/scissors/scissors04-079_png_jpg.rf.918c1937af45d9b61f27d19c3b0dc45f.jpg  \n",
            " extracting: train/scissors/scissors04-084_png_jpg.rf.a1982d6205d6596c6d8ff7f65793ccfa.jpg  \n",
            " extracting: train/scissors/scissors04-085_png_jpg.rf.4c4a75ec97c875b48b6f0b1f7b8277f0.jpg  \n",
            " extracting: train/scissors/scissors04-090_png_jpg.rf.6d5b977dd13000f0b161ff44d8df1dba.jpg  \n",
            " extracting: train/scissors/scissors04-095_png_jpg.rf.fcbeac7d6b235699c5959d935e954771.jpg  \n",
            " extracting: train/scissors/scissors04-104_png_jpg.rf.c892c021801141c736d8004e25e39e67.jpg  \n",
            " extracting: train/scissors/scissors04-116_png_jpg.rf.699c369d6dc5a2c94129bc0142b88d6b.jpg  \n",
            " extracting: train/scissors/scissors2_png_jpg.rf.bca47186faaf66392d4c2ea3ad9a5a0e.jpg  \n",
            " extracting: train/scissors/scissors3_png_jpg.rf.909968882626581ad29467d241548570.jpg  \n",
            " extracting: train/scissors/scissors4_png_jpg.rf.313d404da885f97e8a1bc3819f19801c.jpg  \n",
            " extracting: train/scissors/scissors5_png_jpg.rf.efc7815f67e57f4763e3a91b7717165a.jpg  \n",
            " extracting: train/scissors/scissors6_png_jpg.rf.190da4a777aeadf4c56ecd1c42b953a6.jpg  \n",
            " extracting: train/scissors/scissors7_png_jpg.rf.7042fe522ffe60200f3e171b404f2a7a.jpg  \n",
            " extracting: train/scissors/scissors8_png_jpg.rf.3b16ab3463a13d8da9a938c1bc88391c.jpg  \n",
            " extracting: train/scissors/scissors9_png_jpg.rf.1fd6762f1d13fde1942bfdd671d4659b.jpg  \n",
            " extracting: train/scissors/testscissors01-009_png_jpg.rf.fb2106290f1a3fb074f8134799236697.jpg  \n",
            " extracting: train/scissors/testscissors01-01_png_jpg.rf.ae01f0b7290b89738b674d02faf43dea.jpg  \n",
            " extracting: train/scissors/testscissors01-02_png_jpg.rf.d84c37cd334e7182a3ea1bc108ac9fb8.jpg  \n",
            " extracting: train/scissors/testscissors01-039_png_jpg.rf.fb13dc9ca96d3aea3ee7d4185a70ca7f.jpg  \n",
            " extracting: train/scissors/testscissors01-03_png_jpg.rf.9f65be1214ae94b95ba6bb6b801c8fa8.jpg  \n",
            " extracting: train/scissors/testscissors01-042_png_jpg.rf.9856cbef11688895dee3b6c37446924a.jpg  \n",
            " extracting: train/scissors/testscissors01-050_png_jpg.rf.b0c390d8e80f86758c92e88b0f8b4217.jpg  \n",
            " extracting: train/scissors/testscissors01-055_png_jpg.rf.15a4b2ca6321e6152c4d6055012a260b.jpg  \n",
            " extracting: train/scissors/testscissors01-05_png_jpg.rf.57fbb898aec6c31796d4a67930fd361f.jpg  \n",
            " extracting: train/scissors/testscissors01-06_png_jpg.rf.e8e0e8c42fa4062297bf52a2eb277476.jpg  \n",
            " extracting: train/scissors/testscissors01-074_png_jpg.rf.545aa01a52e9c09983f112363df5a15c.jpg  \n",
            " extracting: train/scissors/testscissors01-083_png_jpg.rf.b36d82fb9a0811db0ad1ef5b1f04185c.jpg  \n",
            " extracting: train/scissors/testscissors01-08_png_jpg.rf.722cca6c170b994f69c0d9332bfdcf70.jpg  \n",
            " extracting: train/scissors/testscissors01-092_png_jpg.rf.d8298ee31e1855831f0b3d2854397bd3.jpg  \n",
            " extracting: train/scissors/testscissors01-093_png_jpg.rf.e6d0642a885d5e72d1b847589ca16bae.jpg  \n",
            " extracting: train/scissors/testscissors01-096_png_jpg.rf.e1aa179b2ef326a45fe2d33575ae8a0d.jpg  \n",
            " extracting: train/scissors/testscissors01-097_png_jpg.rf.9677aac35d78539dab89ad0b84bf80b7.jpg  \n",
            " extracting: train/scissors/testscissors01-100_png_jpg.rf.6962e283da1a5b31909492311d7a0084.jpg  \n",
            " extracting: train/scissors/testscissors01-102_png_jpg.rf.1787c974bfca1df9937d843bf5df8b1a.jpg  \n",
            " extracting: train/scissors/testscissors01-109_png_jpg.rf.ce7af40879e786229b73fb6a4fb7d434.jpg  \n",
            " extracting: train/scissors/testscissors01-10_png_jpg.rf.0ac3131af4ca318ddfdbc6a1cac7dd46.jpg  \n",
            " extracting: train/scissors/testscissors01-115_png_jpg.rf.e89413fafee066d6e3e44a46da87db09.jpg  \n",
            " extracting: train/scissors/testscissors01-11_png_jpg.rf.1e627bbf3b71436d7ef48ce13214f897.jpg  \n",
            " extracting: train/scissors/testscissors01-12_png_jpg.rf.da412514fd4846aa26f986f3408b1e34.jpg  \n",
            " extracting: train/scissors/testscissors01-14_png_jpg.rf.11813bad101e4c9e34c3f2c7c616fd61.jpg  \n",
            " extracting: train/scissors/testscissors01-16_png_jpg.rf.b52407345c1c46843078819369685ae8.jpg  \n",
            " extracting: train/scissors/testscissors01-17_png_jpg.rf.ecbf0083256115300117c1d8184b2624.jpg  \n",
            " extracting: train/scissors/testscissors01-18_png_jpg.rf.f59a6de5e031ec69247875b575872900.jpg  \n",
            " extracting: train/scissors/testscissors01-20_png_jpg.rf.2f2fac73c952f2d1f247d0f71206a5fd.jpg  \n",
            " extracting: train/scissors/testscissors01-21_png_jpg.rf.c7f51beb05c611458496b59e2f264a2e.jpg  \n",
            " extracting: train/scissors/testscissors01-22_png_jpg.rf.5b25d5409c60a69ce60c26ccd9b83c74.jpg  \n",
            " extracting: train/scissors/testscissors01-23_png_jpg.rf.dc8efa1ea2139fee2d409b0f5e1f9d95.jpg  \n",
            " extracting: train/scissors/testscissors01-24_png_jpg.rf.f3166a34e6ba157d073c9751eb62bd27.jpg  \n",
            " extracting: train/scissors/testscissors01-25_png_jpg.rf.123ce7f2cc39b7165ca29250095df845.jpg  \n",
            " extracting: train/scissors/testscissors01-26_png_jpg.rf.ecad125b0d2c8c550ffe89b721566ef3.jpg  \n",
            " extracting: train/scissors/testscissors01-27_png_jpg.rf.a69567910181d21a372d802e47bfd1a6.jpg  \n",
            " extracting: train/scissors/testscissors01-29_png_jpg.rf.7ed6b6c5d94ad7b50b1e1f48f2ddfc0d.jpg  \n",
            " extracting: train/scissors/testscissors01-30_png_jpg.rf.4077b430d3c3423bbca262fd8dc03ac8.jpg  \n",
            " extracting: train/scissors/testscissors02-00_png_jpg.rf.9d6d50a8ec8eecc4348a7899638885a8.jpg  \n",
            " extracting: train/scissors/testscissors02-014_png_jpg.rf.149c040db28246b6102a884bfc2561f2.jpg  \n",
            " extracting: train/scissors/testscissors02-016_png_jpg.rf.ae7df22d537ebcb082dde338ab54e67c.jpg  \n",
            " extracting: train/scissors/testscissors02-01_png_jpg.rf.31c758cebeb4e720f0e0d63c09755857.jpg  \n",
            " extracting: train/scissors/testscissors02-023_png_jpg.rf.386bafe7d0307f45b9d772bb2ca318f5.jpg  \n",
            " extracting: train/scissors/testscissors02-024_png_jpg.rf.11f71a320e7942e9445aa1463b8ad1f4.jpg  \n",
            " extracting: train/scissors/testscissors02-02_png_jpg.rf.09031460c734a0cf856e07e93a42dfd6.jpg  \n",
            " extracting: train/scissors/testscissors02-030_png_jpg.rf.6dcf34fd0c56c4a919f2b25eebb5905d.jpg  \n",
            " extracting: train/scissors/testscissors02-03_png_jpg.rf.b81376da3c00f74b742d1469d4429c45.jpg  \n",
            " extracting: train/scissors/testscissors02-048_png_jpg.rf.7982b4d9f6af2906a7e638993e69a782.jpg  \n",
            " extracting: train/scissors/testscissors02-04_png_jpg.rf.5a8b752e9b2639e0c15cb1f13c28336c.jpg  \n",
            " extracting: train/scissors/testscissors02-052_png_jpg.rf.2befed0e3f19b4b114b152133a3944c9.jpg  \n",
            " extracting: train/scissors/testscissors02-057_png_jpg.rf.14c3741392d4ce90701367f6144e9da6.jpg  \n",
            " extracting: train/scissors/testscissors02-05_png_jpg.rf.7bc5911b312395a710d35e0654f26a5d.jpg  \n",
            " extracting: train/scissors/testscissors02-060_png_jpg.rf.f883050706aae1212e0af460f6cf0f41.jpg  \n",
            " extracting: train/scissors/testscissors02-066_png_jpg.rf.b36e5147ed0b38d2a241bac4e3434e88.jpg  \n",
            " extracting: train/scissors/testscissors02-067_png_jpg.rf.a32728a817d7ff1c06a00861d8e3b55d.jpg  \n",
            " extracting: train/scissors/testscissors02-06_png_jpg.rf.d3afce310fce982136da692840d41454.jpg  \n",
            " extracting: train/scissors/testscissors02-072_png_jpg.rf.d61ef20cd8fa209d4dddf142a56f1b7d.jpg  \n",
            " extracting: train/scissors/testscissors02-084_png_jpg.rf.ade45a329325743604c7eea988156352.jpg  \n",
            " extracting: train/scissors/testscissors02-094_png_jpg.rf.2a6b21c4ec282e763f1b47947a8dbc95.jpg  \n",
            " extracting: train/scissors/testscissors02-095_png_jpg.rf.b9258ad55463740e0e43f0ceef581a03.jpg  \n",
            " extracting: train/scissors/testscissors02-097_png_jpg.rf.bed75ecb6d12cf423865a93a99c804ba.jpg  \n",
            " extracting: train/scissors/testscissors02-102_png_jpg.rf.c3d67b008ce5e4346f6e9c50fe988ebf.jpg  \n",
            " extracting: train/scissors/testscissors02-109_png_jpg.rf.06b6092ead39e429f642b6202a0bba75.jpg  \n",
            " extracting: train/scissors/testscissors02-10_png_jpg.rf.32ba858855c0868de444efc972ab5695.jpg  \n",
            " extracting: train/scissors/testscissors02-110_png_jpg.rf.79dcb805f245db726469a2bece17d755.jpg  \n",
            " extracting: train/scissors/testscissors02-113_png_jpg.rf.ad5065a9deaad12fe0e4cfcb738f908e.jpg  \n",
            " extracting: train/scissors/testscissors02-114_png_jpg.rf.2d6b841d818377b0d7a783fe76f4b99b.jpg  \n",
            " extracting: train/scissors/testscissors02-116_png_jpg.rf.daa36cf303928701e566add0e555b1ea.jpg  \n",
            " extracting: train/scissors/testscissors02-12_png_jpg.rf.4161bec100c79b67beebef0063fabba4.jpg  \n",
            " extracting: train/scissors/testscissors02-13_png_jpg.rf.742b69dc48c84b109e2fca25c7ef37a8.jpg  \n",
            " extracting: train/scissors/testscissors02-15_png_jpg.rf.e7ae41213f8c712e065b42bcad271cba.jpg  \n",
            " extracting: train/scissors/testscissors02-16_png_jpg.rf.9ab55427333fbb8b1adb7a5acf5090d3.jpg  \n",
            " extracting: train/scissors/testscissors02-17_png_jpg.rf.5eda7cf4ebf964fec053b4827712d209.jpg  \n",
            " extracting: train/scissors/testscissors02-19_png_jpg.rf.0eca516acb615021f81295d6a9959ed7.jpg  \n",
            " extracting: train/scissors/testscissors02-21_png_jpg.rf.ad67536d8ec571802b335913244adb21.jpg  \n",
            " extracting: train/scissors/testscissors02-23_png_jpg.rf.41073560090d4ff68c36b95121cfa5ae.jpg  \n",
            " extracting: train/scissors/testscissors02-24_png_jpg.rf.c4336e87a80434a2c3c6fdc1c9f3413d.jpg  \n",
            " extracting: train/scissors/testscissors02-27_png_jpg.rf.ab668be25efb1e53413b6ef0a1002fa8.jpg  \n",
            " extracting: train/scissors/testscissors02-28_png_jpg.rf.7b33c9a7e2d4cfc0be2a22bca0c07904.jpg  \n",
            " extracting: train/scissors/testscissors02-29_png_jpg.rf.4da44a20a745ce546d7f6ce6927face8.jpg  \n",
            " extracting: train/scissors/testscissors02-30_png_jpg.rf.e75d847fb9cdd63d2546bf7edf73a0aa.jpg  \n",
            " extracting: train/scissors/testscissors03-001_png_jpg.rf.2e73ff76312d16e6c0cf3c48b207d268.jpg  \n",
            " extracting: train/scissors/testscissors03-003_png_jpg.rf.86e58196e26853946fdbba83743c7d9c.jpg  \n",
            " extracting: train/scissors/testscissors03-005_png_jpg.rf.ec32a8f9ee8c0ab825130fee21001e58.jpg  \n",
            " extracting: train/scissors/testscissors03-013_png_jpg.rf.9e67158cea8612b55a5e3a527a5b9178.jpg  \n",
            " extracting: train/scissors/testscissors03-01_png_jpg.rf.d5559f9bbf89505798ba3d40cc6cc7bc.jpg  \n",
            " extracting: train/scissors/testscissors03-025_png_jpg.rf.5b1f3d8db1e46de96e8dd9cf76e78aaa.jpg  \n",
            " extracting: train/scissors/testscissors03-02_png_jpg.rf.09e50d7712352a523b354386d39d7421.jpg  \n",
            " extracting: train/scissors/testscissors03-03_png_jpg.rf.222293ad0ee383a82fb60e69c56f506c.jpg  \n",
            " extracting: train/scissors/testscissors03-041_png_jpg.rf.d1a0a2ab48bb21926cdc2ad698564faa.jpg  \n",
            " extracting: train/scissors/testscissors03-047_png_jpg.rf.a197517046ef18f0bb89e01501490897.jpg  \n",
            " extracting: train/scissors/testscissors03-04_png_jpg.rf.ed11420314ad70d6ca225d2e8c41393e.jpg  \n",
            " extracting: train/scissors/testscissors03-051_png_jpg.rf.97d26f028f03e0d182d718e3d616d356.jpg  \n",
            " extracting: train/scissors/testscissors03-05_png_jpg.rf.d16bb48f7697548ee7d04e53fc1d8d54.jpg  \n",
            " extracting: train/scissors/testscissors03-064_png_jpg.rf.e8de8ee0d7c7854d00efef07d1b354ed.jpg  \n",
            " extracting: train/scissors/testscissors03-06_png_jpg.rf.c53f9c3dad3fc5aa9e9ffdaa0a40e392.jpg  \n",
            " extracting: train/scissors/testscissors03-070_png_jpg.rf.86014fad92917bd0798a7cee1faecd0b.jpg  \n",
            " extracting: train/scissors/testscissors03-076_png_jpg.rf.2b616c2e55aafc755d7c2f79c7d46cd0.jpg  \n",
            " extracting: train/scissors/testscissors03-07_png_jpg.rf.0cdc562931c54a1f9ca80d977692c1a5.jpg  \n",
            " extracting: train/scissors/testscissors03-088_png_jpg.rf.2cd85b289d281d1e43d36688cd0799f6.jpg  \n",
            " extracting: train/scissors/testscissors03-09_png_jpg.rf.1fdb73b6b1b4670f76d9e41e32a36a1d.jpg  \n",
            " extracting: train/scissors/testscissors03-10_png_jpg.rf.2557f5f00563535aa8219a51c5b3ee69.jpg  \n",
            " extracting: train/scissors/testscissors03-13_png_jpg.rf.dddedefc1fc41cbf71fef3ac4f0d675c.jpg  \n",
            " extracting: train/scissors/testscissors03-14_png_jpg.rf.15458900f05c526431bd37ab12ac54d8.jpg  \n",
            " extracting: train/scissors/testscissors03-15_png_jpg.rf.ab0d54bea94f71cf9847c5d26bc878d9.jpg  \n",
            " extracting: train/scissors/testscissors03-16_png_jpg.rf.87682ef200b5dd0f0882892d1435ab00.jpg  \n",
            " extracting: train/scissors/testscissors03-17_png_jpg.rf.f40a1fd5418b0b03aef715fb8ddf0e81.jpg  \n",
            " extracting: train/scissors/testscissors03-18_png_jpg.rf.a2e34febcc17e25512fbaba2c26b3b34.jpg  \n",
            " extracting: train/scissors/testscissors03-24_png_jpg.rf.15535d2f5cf9101ab5a3d2131bf207fa.jpg  \n",
            " extracting: train/scissors/testscissors03-26_png_jpg.rf.80b7c80df7d29d07128fc19a61c73615.jpg  \n",
            " extracting: train/scissors/testscissors03-27_png_jpg.rf.85122e7db9b218a9edbab0dd568c2fbc.jpg  \n",
            " extracting: train/scissors/testscissors03-28_png_jpg.rf.51c8e51ffecfdbe569251738a9919cb3.jpg  \n",
            " extracting: train/scissors/testscissors03-29_png_jpg.rf.6e2a514984f87508be5e51a8fc13a827.jpg  \n",
            " extracting: train/scissors/testscissors04-00_png_jpg.rf.06de8926c0493fc46dd3a506893740d8.jpg  \n",
            " extracting: train/scissors/testscissors04-01_png_jpg.rf.698a47815da29430ab63cc5fc069980c.jpg  \n",
            " extracting: train/scissors/testscissors04-03_png_jpg.rf.030c21618c02d41c23d5975cadca8c27.jpg  \n",
            " extracting: train/scissors/testscissors04-04_png_jpg.rf.9aeb71a2c6f518e29e2490fb45ffeedb.jpg  \n",
            " extracting: train/scissors/testscissors04-05_png_jpg.rf.2b0ca153b84b06cede88e6695cf07964.jpg  \n",
            " extracting: train/scissors/testscissors04-08_png_jpg.rf.365af66d292cf9bbcc758bfe35c16dbf.jpg  \n",
            " extracting: train/scissors/testscissors04-09_png_jpg.rf.fcce664148e382e6fd9818b5bc719fd6.jpg  \n",
            " extracting: train/scissors/testscissors04-10_png_jpg.rf.7a019ab53ededb9dbedbd257332cd197.jpg  \n",
            " extracting: train/scissors/testscissors04-11_png_jpg.rf.1df0a0738706cc67d5caffa0767422cd.jpg  \n",
            " extracting: train/scissors/testscissors04-13_png_jpg.rf.3975cb02fa1d5f9309ed73f249f77e49.jpg  \n",
            " extracting: train/scissors/testscissors04-16_png_jpg.rf.646ff91e46bdeb4f7348cff6bb06eb05.jpg  \n",
            " extracting: train/scissors/testscissors04-17_png_jpg.rf.59860403e9e359ccb469d8453eedc9eb.jpg  \n",
            " extracting: train/scissors/testscissors04-18_png_jpg.rf.5ddf22f35eac3decca86c1269473b4bb.jpg  \n",
            " extracting: train/scissors/testscissors04-20_png_jpg.rf.481da73edde145d3f73ec28a59067545.jpg  \n",
            " extracting: train/scissors/testscissors04-21_png_jpg.rf.3d6d2605afc33acbb6d950526c632624.jpg  \n",
            " extracting: train/scissors/testscissors04-22_png_jpg.rf.c4e884163b1e611df8f3a3308ffd7efe.jpg  \n",
            " extracting: train/scissors/testscissors04-23_png_jpg.rf.44b1ba5795631da7dc9e4ee31ef7a48a.jpg  \n",
            " extracting: train/scissors/testscissors04-24_png_jpg.rf.753f323cbb74d95dd939c38f76be1c32.jpg  \n",
            " extracting: train/scissors/testscissors04-25_png_jpg.rf.f79aed6e5fea98d974ed623b0b400a15.jpg  \n",
            " extracting: train/scissors/testscissors04-26_png_jpg.rf.f6035c191843382d0b415f50b521379a.jpg  \n",
            " extracting: train/scissors/testscissors04-29_png_jpg.rf.86036821fc86560af075d996a8b37c1a.jpg  \n",
            " extracting: train/scissors/testscissors04-30_png_jpg.rf.c975147f34e40d4a7ac80f3f611d44d2.jpg  \n",
            "   creating: valid/\n",
            "   creating: valid/paper/\n",
            " extracting: valid/paper/paper-hires1_png_jpg.rf.ab8a1945a3cbf2944681998f74d83527.jpg  \n",
            " extracting: valid/paper/paper01-010_png_jpg.rf.51b1f44841a88e8f96657a1d092f550b.jpg  \n",
            " extracting: valid/paper/paper01-031_png_jpg.rf.0c168e6b91c17f29c464296846f58697.jpg  \n",
            " extracting: valid/paper/paper01-066_png_jpg.rf.a74f3058fce7f07e01b5ccc24d76a4ec.jpg  \n",
            " extracting: valid/paper/paper01-079_png_jpg.rf.397113b3aafc48a67d0aaa8a72e4fdde.jpg  \n",
            " extracting: valid/paper/paper01-083_png_jpg.rf.41739147904644e2490adaca9e1a5970.jpg  \n",
            " extracting: valid/paper/paper01-095_png_jpg.rf.8a37ca2884aa10e10bc1da67dd986de0.jpg  \n",
            " extracting: valid/paper/paper02-042_png_jpg.rf.ad4a985e4c2bb24a84954e6b0daecd3d.jpg  \n",
            " extracting: valid/paper/paper02-052_png_jpg.rf.6b38dcaebda21711947c5c7300441ecf.jpg  \n",
            " extracting: valid/paper/paper02-053_png_jpg.rf.1cbd60f3367902e69ad38a0c149b2d7e.jpg  \n",
            " extracting: valid/paper/paper02-059_png_jpg.rf.85fd810eebbf7a13e3900825bc6e4e8f.jpg  \n",
            " extracting: valid/paper/paper03-009_png_jpg.rf.d05c9e43a68ce8e3e0980b64710befe4.jpg  \n",
            " extracting: valid/paper/paper03-046_png_jpg.rf.9cdca8bea0e85cea19c870df97778016.jpg  \n",
            " extracting: valid/paper/paper03-053_png_jpg.rf.ee8c07606317695e7871f997b89cf1f3.jpg  \n",
            " extracting: valid/paper/paper03-084_png_jpg.rf.211455e72ddc4cde6b550b7367abad4a.jpg  \n",
            " extracting: valid/paper/paper03-088_png_jpg.rf.30ec915d130817fd12bff34abf48b564.jpg  \n",
            " extracting: valid/paper/paper03-103_png_jpg.rf.e686ac61e05a9bd37a990df1f7795c4b.jpg  \n",
            " extracting: valid/paper/paper03-115_png_jpg.rf.cf66443a0833cb90eb86b56eb694a86d.jpg  \n",
            " extracting: valid/paper/paper04-001_png_jpg.rf.b741f7f846d9b8efb53ea1abae5e5474.jpg  \n",
            " extracting: valid/paper/paper04-007_png_jpg.rf.b4b282c5da92e0c4c2ad42699d3f7d34.jpg  \n",
            " extracting: valid/paper/paper04-017_png_jpg.rf.6bc755170cf9ee49b4b59911b0a8ea85.jpg  \n",
            " extracting: valid/paper/paper04-043_png_jpg.rf.e78437209967f0cd9e7ec5b07fc14cb8.jpg  \n",
            " extracting: valid/paper/paper04-058_png_jpg.rf.a32c8bef614d91c631feb994a83c39f3.jpg  \n",
            " extracting: valid/paper/paper05-084_png_jpg.rf.f13bed2c759683b3a979a45f2c4455f3.jpg  \n",
            " extracting: valid/paper/paper05-088_png_jpg.rf.5caaa7ac1a55e309f9c42865f77f3fd1.jpg  \n",
            " extracting: valid/paper/paper05-103_png_jpg.rf.d6430ee95336c0805d08cc292ada08de.jpg  \n",
            " extracting: valid/paper/paper06-044_png_jpg.rf.418fa065d35175308f572b71fd194710.jpg  \n",
            " extracting: valid/paper/paper06-062_png_jpg.rf.4490057a85069deca3721d5a365777f9.jpg  \n",
            " extracting: valid/paper/paper07-017_png_jpg.rf.64e3794dd0c62da62a38c323900680d0.jpg  \n",
            " extracting: valid/paper/paper07-076_png_jpg.rf.b1825775bd47b88a9830e405deb9e84d.jpg  \n",
            " extracting: valid/paper/paper07-078_png_jpg.rf.8717c86690e45e7b96233e806b1ab389.jpg  \n",
            " extracting: valid/paper/paper07-110_png_jpg.rf.d26c7d8e7fe57e5275eacb16189c3fc1.jpg  \n",
            " extracting: valid/paper/paper07-114_png_jpg.rf.d5fa18965eecb926d237cd19c32a412b.jpg  \n",
            " extracting: valid/paper/paper1_png_jpg.rf.a24ae6cd95cb7a6665f804672f16584e.jpg  \n",
            " extracting: valid/paper/paper5_png_jpg.rf.9590f3d474ae0df726eda20fa996d0fe.jpg  \n",
            " extracting: valid/paper/paper6_png_jpg.rf.93b5d3b01ca55743b656a12079494b16.jpg  \n",
            " extracting: valid/paper/paper7_png_jpg.rf.d26e7f2a8453ee19f852173204745fcf.jpg  \n",
            " extracting: valid/paper/paper8_png_jpg.rf.95479694e8cceac68133ef876c43674f.jpg  \n",
            " extracting: valid/paper/testpaper01-00_png_jpg.rf.5712b06b0125cb3626289bc349f2d27a.jpg  \n",
            " extracting: valid/paper/testpaper01-02_png_jpg.rf.3652cf2cbb835f6026082bc2d97b4a64.jpg  \n",
            " extracting: valid/paper/testpaper01-04_png_jpg.rf.ae4fe9b61cf32aa5ace828c67d98812c.jpg  \n",
            " extracting: valid/paper/testpaper01-15_png_jpg.rf.7914f6e278221923f5c82bc4802c773f.jpg  \n",
            " extracting: valid/paper/testpaper01-16_png_jpg.rf.cd26f7a08a23e110f2f2fc58348d659d.jpg  \n",
            " extracting: valid/paper/testpaper01-17_png_jpg.rf.8abfc35abe6d908ec161f787b6c7207e.jpg  \n",
            " extracting: valid/paper/testpaper01-29_png_jpg.rf.f414707664c1ad4d9c573c90f92ec57b.jpg  \n",
            " extracting: valid/paper/testpaper02-02_png_jpg.rf.ac791e73a6105bfef044c5637c051240.jpg  \n",
            " extracting: valid/paper/testpaper02-05_png_jpg.rf.823a71bc68724b0890b49d40bd295e1b.jpg  \n",
            " extracting: valid/paper/testpaper02-13_png_jpg.rf.b6268a5fb3a7b2952a5b36942303a3df.jpg  \n",
            " extracting: valid/paper/testpaper02-14_png_jpg.rf.0ffb7ff18abeda4ea70791089069f6fd.jpg  \n",
            " extracting: valid/paper/testpaper02-15_png_jpg.rf.64f497d18c1991699baf1663a22cd726.jpg  \n",
            " extracting: valid/paper/testpaper02-23_png_jpg.rf.e611f055adfb16cc635c3837a5ee1a8e.jpg  \n",
            " extracting: valid/paper/testpaper02-24_png_jpg.rf.87c2677c8796218bf933d1e523d3fee1.jpg  \n",
            " extracting: valid/paper/testpaper02-26_png_jpg.rf.a6a69afc2c4b83cbad13a6180222e281.jpg  \n",
            " extracting: valid/paper/testpaper03-00_png_jpg.rf.a6a11449522cce140c235eb840aa429f.jpg  \n",
            " extracting: valid/paper/testpaper03-03_png_jpg.rf.3988911cd6235905ea0a802c10ec95e3.jpg  \n",
            " extracting: valid/paper/testpaper03-07_png_jpg.rf.67d5acb99cf975e13a3d4cc36fec2f8e.jpg  \n",
            " extracting: valid/paper/testpaper03-09_png_jpg.rf.4d41414ba9e1c3ecc76c0486ce85191b.jpg  \n",
            " extracting: valid/paper/testpaper03-11_png_jpg.rf.e9f696f8a57e9f80a472e769e1cd59e8.jpg  \n",
            " extracting: valid/paper/testpaper03-24_png_jpg.rf.d23bc1af3d92a31836569935166182f5.jpg  \n",
            " extracting: valid/paper/testpaper03-29_png_jpg.rf.32a692bdef65e0aa4579f8eba0a95d9c.jpg  \n",
            " extracting: valid/paper/testpaper04-02_png_jpg.rf.135c992c212c7aa5c6a754b5b77ee081.jpg  \n",
            " extracting: valid/paper/testpaper04-19_png_jpg.rf.03570c3421a7eaf7046aa7563908e835.jpg  \n",
            " extracting: valid/paper/testpaper04-20_png_jpg.rf.3d5fee4d64e5903dea9dad27c905b6f1.jpg  \n",
            " extracting: valid/paper/testpaper04-21_png_jpg.rf.36817b9fd72cbdc81be7933424f43e44.jpg  \n",
            " extracting: valid/paper/testpaper04-28_png_jpg.rf.e8df1dae401dfc57eb79ed18956e1219.jpg  \n",
            " extracting: valid/paper/testpaper04-30_png_jpg.rf.abe6ae0df768588f9eaa1a2c36085c9b.jpg  \n",
            "   creating: valid/rock/\n",
            " extracting: valid/rock/rock-hires1_png_jpg.rf.fbdde0954fba2ac9bee1f84e9a0a019d.jpg  \n",
            " extracting: valid/rock/rock01-019_png_jpg.rf.d29c6219580e0eba7f813f21e5e2bee8.jpg  \n",
            " extracting: valid/rock/rock01-023_png_jpg.rf.b38adecef669cd37b866b850ccf0378c.jpg  \n",
            " extracting: valid/rock/rock01-047_png_jpg.rf.146ae10f98e48d37edcb94cfefb59384.jpg  \n",
            " extracting: valid/rock/rock01-082_png_jpg.rf.276f95600b178733bd9bb075fa0e1efe.jpg  \n",
            " extracting: valid/rock/rock01-083_png_jpg.rf.d588124e42cea75b3092c4ece6e0aad9.jpg  \n",
            " extracting: valid/rock/rock01-088_png_jpg.rf.8ef35b71fc58e0a2ddecb67460d9916c.jpg  \n",
            " extracting: valid/rock/rock01-101_png_jpg.rf.84f8b4b7b9929562679b3257e20a72e7.jpg  \n",
            " extracting: valid/rock/rock01-110_png_jpg.rf.aa4805b1d4110693092cfd4d5f7c3c00.jpg  \n",
            " extracting: valid/rock/rock02-022_png_jpg.rf.c4565a633a5785de6aa6b4d859cecd25.jpg  \n",
            " extracting: valid/rock/rock02-037_png_jpg.rf.4c8afa6ab345ef35275306e7d79a7995.jpg  \n",
            " extracting: valid/rock/rock02-093_png_jpg.rf.fc658a035246a1e5aec0f42467b35ae3.jpg  \n",
            " extracting: valid/rock/rock03-012_png_jpg.rf.818345d82efc59679f8b7f650d3c2f99.jpg  \n",
            " extracting: valid/rock/rock03-022_png_jpg.rf.b85b46c3983e8952c799804624f56141.jpg  \n",
            " extracting: valid/rock/rock03-042_png_jpg.rf.57e42ca0555902edff78b4b90d9818bf.jpg  \n",
            " extracting: valid/rock/rock03-078_png_jpg.rf.ee0ab84424605a97e3eed4f073027183.jpg  \n",
            " extracting: valid/rock/rock04-032_png_jpg.rf.2a619bad09ecc4fef785ad097e9b2aa3.jpg  \n",
            " extracting: valid/rock/rock04-065_png_jpg.rf.e87ef402ae05c2c3be1baaef89a44bdf.jpg  \n",
            " extracting: valid/rock/rock04-069_png_jpg.rf.f122f54d2f0358cc5bfe0abe83664f00.jpg  \n",
            " extracting: valid/rock/rock04-082_png_jpg.rf.025f2d5909f5c18519c2559efd8aced9.jpg  \n",
            " extracting: valid/rock/rock04-091_png_jpg.rf.7247252431d38e808d36cf709a887fb1.jpg  \n",
            " extracting: valid/rock/rock05ck01-003_png_jpg.rf.da74dc103e738ea3c4c8b75ceea584ab.jpg  \n",
            " extracting: valid/rock/rock05ck01-036_png_jpg.rf.61b087b32b2926cad63a82ded89f3914.jpg  \n",
            " extracting: valid/rock/rock05ck01-038_png_jpg.rf.7981d559f18168551bd9cd7b83c2b9c6.jpg  \n",
            " extracting: valid/rock/rock05ck01-046_png_jpg.rf.dc151a59f7589e7d1f61f0eda1cacb73.jpg  \n",
            " extracting: valid/rock/rock05ck01-069_png_jpg.rf.1e7a7ea99ad7ccd3523dfb65ed76d22b.jpg  \n",
            " extracting: valid/rock/rock05ck01-080_png_jpg.rf.7e1b58d35308018dcf8faa49a37b22c6.jpg  \n",
            " extracting: valid/rock/rock05ck01-110_png_jpg.rf.759ddaee53ff63a147bc98ab0904c7d7.jpg  \n",
            " extracting: valid/rock/rock06ck02-006_png_jpg.rf.9e6f5ad6ae0759d63cad80a7a77a7486.jpg  \n",
            " extracting: valid/rock/rock06ck02-028_png_jpg.rf.c6b3b2f1cee2143dad520758b66dfff3.jpg  \n",
            " extracting: valid/rock/rock06ck02-056_png_jpg.rf.48672f56a56d0de3eda1a66e886c1dec.jpg  \n",
            " extracting: valid/rock/rock06ck02-095_png_jpg.rf.b8d700b285f1b543d04e951ea56e2767.jpg  \n",
            " extracting: valid/rock/rock07-k03-022_png_jpg.rf.0df7135a9c505f2e7dd793d47d95b73a.jpg  \n",
            " extracting: valid/rock/rock07-k03-024_png_jpg.rf.206a04cee3739e03cc7942f01cf1a3f4.jpg  \n",
            " extracting: valid/rock/rock07-k03-067_png_jpg.rf.fd186e125196189e916337eb8e7b0fb6.jpg  \n",
            " extracting: valid/rock/rock5_png_jpg.rf.85f25b9eda6bcca60939efe95852588d.jpg  \n",
            " extracting: valid/rock/testrock01-01_png_jpg.rf.72685a8b1f3baf6a96b681cf4c5e1746.jpg  \n",
            " extracting: valid/rock/testrock01-06_png_jpg.rf.5ce360e0edb67385394e36d1396f67ff.jpg  \n",
            " extracting: valid/rock/testrock01-10_png_jpg.rf.d649e4badecbaa57ce547bb8a95d8ff1.jpg  \n",
            " extracting: valid/rock/testrock01-25_png_jpg.rf.9e284febdf3c22688aa3d11f64790059.jpg  \n",
            " extracting: valid/rock/testrock01-26_png_jpg.rf.38da52129c623dc4163b950aabfe2f8a.jpg  \n",
            " extracting: valid/rock/testrock01-27_png_jpg.rf.6d740f0b79f0e5d756d6375f638a775e.jpg  \n",
            " extracting: valid/rock/testrock02-06_png_jpg.rf.dfbe66e182ac19ebb1380343a4f0ea0c.jpg  \n",
            " extracting: valid/rock/testrock02-10_png_jpg.rf.65b62f99a09cf16823bb2a10018f1f57.jpg  \n",
            " extracting: valid/rock/testrock02-13_png_jpg.rf.6bc04c423bd4e132f4c80c60c8d2fff1.jpg  \n",
            " extracting: valid/rock/testrock02-23_png_jpg.rf.ed8ba8d3f35e68598a640d850b07cb94.jpg  \n",
            " extracting: valid/rock/testrock02-24_png_jpg.rf.5bed1ce7e5fb736f30dea06894983543.jpg  \n",
            " extracting: valid/rock/testrock02-26_png_jpg.rf.4edb0364774766232103264012851e5d.jpg  \n",
            " extracting: valid/rock/testrock02-28_png_jpg.rf.a3909e162c361c3f4c39b01ca0c70530.jpg  \n",
            " extracting: valid/rock/testrock03-11_png_jpg.rf.b5efbd8996d48b136facde0d4c7c4b29.jpg  \n",
            " extracting: valid/rock/testrock03-18_png_jpg.rf.2abb94ba69d6f328b03b5b4537778047.jpg  \n",
            " extracting: valid/rock/testrock03-20_png_jpg.rf.e81cbfadc3d2499b003e0da039b27f21.jpg  \n",
            " extracting: valid/rock/testrock03-26_png_jpg.rf.1295ee788983d96ff3052a479358e489.jpg  \n",
            " extracting: valid/rock/testrock03-27_png_jpg.rf.5142b6832e8f1823bd2c84901df92d7c.jpg  \n",
            " extracting: valid/rock/testrock03-29_png_jpg.rf.bbc885e8644395a83468bc35ce84ed31.jpg  \n",
            " extracting: valid/rock/testrock04-00_png_jpg.rf.40170be295e5948290d43fb9593b73eb.jpg  \n",
            " extracting: valid/rock/testrock04-07_png_jpg.rf.a3b1919206a6cdb55c19ea39fa8622ef.jpg  \n",
            " extracting: valid/rock/testrock04-11_png_jpg.rf.6674b605abb582d90a5b1314143e9662.jpg  \n",
            " extracting: valid/rock/testrock04-16_png_jpg.rf.4b679e122b5056ec1978eabe1ca71981.jpg  \n",
            " extracting: valid/rock/testrock04-20_png_jpg.rf.8c75c79e5ecd8bc3028985633fc9ce9e.jpg  \n",
            " extracting: valid/rock/testrock04-23_png_jpg.rf.f920270d4df058b7065a607609c694f5.jpg  \n",
            " extracting: valid/rock/testrock04-25_png_jpg.rf.22d0c7bd683c5a11683072c3da9086ca.jpg  \n",
            "   creating: valid/scissors/\n",
            " extracting: valid/scissors/scissors01-041_png_jpg.rf.803ee42432df2956614bc65aac5dcf27.jpg  \n",
            " extracting: valid/scissors/scissors01-056_png_jpg.rf.d063d300e4cbee5c16b2073a115dbbac.jpg  \n",
            " extracting: valid/scissors/scissors01-065_png_jpg.rf.17a6daef8db45d10f2163ad5f098c3c3.jpg  \n",
            " extracting: valid/scissors/scissors01-088_png_jpg.rf.dca541be2104dda43d151ee9cb99d517.jpg  \n",
            " extracting: valid/scissors/scissors01-096_png_jpg.rf.fcc096323b79d1d37be75d820cfd71c8.jpg  \n",
            " extracting: valid/scissors/scissors02-017_png_jpg.rf.5bd8094eb95ce11c71f71bd00b38c16c.jpg  \n",
            " extracting: valid/scissors/scissors02-024_png_jpg.rf.70457aaf6985d871275c6b968c91931d.jpg  \n",
            " extracting: valid/scissors/scissors02-058_png_jpg.rf.2a1f7fe5e07c97d69b0e98fc57ae49d0.jpg  \n",
            " extracting: valid/scissors/scissors02-100_png_jpg.rf.fbc583b24c72c675b471c0e83d6be36e.jpg  \n",
            " extracting: valid/scissors/scissors02-101_png_jpg.rf.923f4510bd2ebbafaa1f438739aa568d.jpg  \n",
            " extracting: valid/scissors/scissors03-011_png_jpg.rf.028e3d168df3110b23b05dfd12fcaffd.jpg  \n",
            " extracting: valid/scissors/scissors03-098_png_jpg.rf.d29c6aef9dab0e847c8f0839b9b2fd42.jpg  \n",
            " extracting: valid/scissors/scissors04-112_png_jpg.rf.707f3d84a6a4995465697932f8a20a09.jpg  \n",
            " extracting: valid/scissors/scissors1_png_jpg.rf.1f422929d36c1059cca6b0227ecf5b79.jpg  \n",
            " extracting: valid/scissors/testscissors01-005_png_jpg.rf.35bb88f03ef151eca2dcf1eaa2537f81.jpg  \n",
            " extracting: valid/scissors/testscissors01-00_png_jpg.rf.389aedadce733caaffbbb90a5fbfa967.jpg  \n",
            " extracting: valid/scissors/testscissors01-034_png_jpg.rf.11c13b1a39dd54c4a28c89e000d6685e.jpg  \n",
            " extracting: valid/scissors/testscissors01-046_png_jpg.rf.06d08bf6f80ea52023f7dfac2d52feba.jpg  \n",
            " extracting: valid/scissors/testscissors01-04_png_jpg.rf.7cc66f54baf93870207325eead2d8340.jpg  \n",
            " extracting: valid/scissors/testscissors01-070_png_jpg.rf.494b842fe55845937ae535a7fe0b891c.jpg  \n",
            " extracting: valid/scissors/testscissors01-075_png_jpg.rf.1fff1bb49982cbcd758ef39c6843d765.jpg  \n",
            " extracting: valid/scissors/testscissors01-078_png_jpg.rf.ac47e226eb9bcfcd1e74b65cbe166662.jpg  \n",
            " extracting: valid/scissors/testscissors01-07_png_jpg.rf.28744ec291892a1a5f24662baddd0a67.jpg  \n",
            " extracting: valid/scissors/testscissors01-080_png_jpg.rf.fff2590490c79e9e9527b60c2272beb1.jpg  \n",
            " extracting: valid/scissors/testscissors01-19_png_jpg.rf.d7342b9b68ca8bb88f3813800a782d85.jpg  \n",
            " extracting: valid/scissors/testscissors01-28_png_jpg.rf.668dd2c16f0be63ebbddae7d2e144bc1.jpg  \n",
            " extracting: valid/scissors/testscissors02-022_png_jpg.rf.e9766782f64db3ad59135d23bfab68ad.jpg  \n",
            " extracting: valid/scissors/testscissors02-058_png_jpg.rf.adf44a30c63769d10015747dcb120ccf.jpg  \n",
            " extracting: valid/scissors/testscissors02-073_png_jpg.rf.56e45b5441b74b45942e92f8b2a4b408.jpg  \n",
            " extracting: valid/scissors/testscissors02-07_png_jpg.rf.c01debf9e8803c935aae93b2bc988a80.jpg  \n",
            " extracting: valid/scissors/testscissors02-08_png_jpg.rf.65b59266c98f58d76f4eee552a5db7b2.jpg  \n",
            " extracting: valid/scissors/testscissors02-09_png_jpg.rf.fb730663ad65fb64705de3ef6edf2e36.jpg  \n",
            " extracting: valid/scissors/testscissors02-11_png_jpg.rf.3bb96567302d7dfda34cd80ff24315ce.jpg  \n",
            " extracting: valid/scissors/testscissors02-14_png_jpg.rf.f9cfdceb4810778999c9f64c7e14ddd8.jpg  \n",
            " extracting: valid/scissors/testscissors02-18_png_jpg.rf.6bb441177ee055418b140519177ef91f.jpg  \n",
            " extracting: valid/scissors/testscissors02-20_png_jpg.rf.c4f6a573a1ee22cb0ad1f54c2a101ddc.jpg  \n",
            " extracting: valid/scissors/testscissors02-22_png_jpg.rf.3938fce5c4c9f832c590dbc841de45cd.jpg  \n",
            " extracting: valid/scissors/testscissors02-26_png_jpg.rf.3d5fa105dc9297055ef1a04252085f03.jpg  \n",
            " extracting: valid/scissors/testscissors03-00_png_jpg.rf.c7dfea85753d26dced67905ad3ea4d8c.jpg  \n",
            " extracting: valid/scissors/testscissors03-020_png_jpg.rf.4a0b3d41869223940f78b58431cc9c8d.jpg  \n",
            " extracting: valid/scissors/testscissors03-049_png_jpg.rf.1d16c303166b6590ee20b36bdac902e5.jpg  \n",
            " extracting: valid/scissors/testscissors03-08_png_jpg.rf.f5525ccf23ddc0e54ad78ca35033131b.jpg  \n",
            " extracting: valid/scissors/testscissors03-091_png_jpg.rf.f691c6eebb88272c67279ca5609a8e41.jpg  \n",
            " extracting: valid/scissors/testscissors03-102_png_jpg.rf.7f9d24e0160017e7f1acc8080823eac6.jpg  \n",
            " extracting: valid/scissors/testscissors03-106_png_jpg.rf.86c931ee127b25aebe97c211d40a55f8.jpg  \n",
            " extracting: valid/scissors/testscissors03-12_png_jpg.rf.50bc6c1cb5b1ccb50a44ed02117583e0.jpg  \n",
            " extracting: valid/scissors/testscissors03-19_png_jpg.rf.2454916a9cac633860418f3345cf67f3.jpg  \n",
            " extracting: valid/scissors/testscissors03-23_png_jpg.rf.eb6aa7b64bc0b4a9a6a712857704d539.jpg  \n",
            " extracting: valid/scissors/testscissors04-02_png_jpg.rf.8f3e08eba21d2bbf4bf423a04ccb26df.jpg  \n",
            " extracting: valid/scissors/testscissors04-07_png_jpg.rf.f050971e3f2c1c9e0daf74572722f0a4.jpg  \n",
            " extracting: valid/scissors/testscissors04-15_png_jpg.rf.ade1ccf7f28662be61faf66fb055e07f.jpg  \n",
            " extracting: valid/scissors/testscissors04-19_png_jpg.rf.6265f6e6a1dd7d9acd385078130d702e.jpg  \n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "1DSSAj4Os-Od"
      },
      "source": [
        "Next, convert the folder structure dataset into a PyTorch dataset format using PyTorch's ImageFolder dataset structure:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kgn-a3NiSjqR"
      },
      "source": [
        "import torchvision\n",
        "from torchvision.transforms import ToTensor\n",
        "\n",
        "train_ds = torchvision.datasets.ImageFolder('/content/train/', transform=ToTensor())\n",
        "valid_ds = torchvision.datasets.ImageFolder('/content/valid/', transform=ToTensor())\n",
        "test_ds = torchvision.datasets.ImageFolder('/content/test/', transform=ToTensor())"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wyHJjDYLfoFy"
      },
      "source": [
        "## Define the Model\n",
        "\n",
        "Here we define the model.\n",
        "\n",
        "The model itself uses a linear layer on top of a pre-trained `ViTModel`. We place a linear layer on top of the last hidden state of the [CLS] token, which serves as a good representation of an entire image. We also add dropout for regularization.\n",
        "\n",
        "**Note:** The Vision Transformer pretrained model can be used as a regular PyTorch layer."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cGDrb1Q4ToLN"
      },
      "source": [
        "from transformers import ViTModel\n",
        "from transformers.modeling_outputs import SequenceClassifierOutput\n",
        "import torch.nn as nn\n",
        "import torch.nn.functional as F\n",
        "\n",
        "class ViTForImageClassification(nn.Module):\n",
        "    def __init__(self, num_labels=3):\n",
        "        super(ViTForImageClassification, self).__init__()\n",
        "        self.vit = ViTModel.from_pretrained('google/vit-base-patch16-224-in21k')\n",
        "        self.dropout = nn.Dropout(0.1)\n",
        "        self.classifier = nn.Linear(self.vit.config.hidden_size, num_labels)\n",
        "        self.num_labels = num_labels\n",
        "\n",
        "    def forward(self, pixel_values, labels):\n",
        "        outputs = self.vit(pixel_values=pixel_values)\n",
        "        output = self.dropout(outputs.last_hidden_state[:,0])\n",
        "        logits = self.classifier(output)\n",
        "\n",
        "        loss = None\n",
        "        if labels is not None:\n",
        "          loss_fct = nn.CrossEntropyLoss()\n",
        "          loss = loss_fct(logits.view(-1, self.num_labels), labels.view(-1))\n",
        "        if loss is not None:\n",
        "          return logits, loss.item()\n",
        "        else:\n",
        "          return logits, None"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "BePiLK-LtXuG"
      },
      "source": [
        "## Define the Model Parameters\n",
        "\n",
        "To train this model, we will train in 3 epochs, with a batch size of 10 and a learning rate of 2e-5:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ntGvS0_wUAxc"
      },
      "source": [
        "EPOCHS = 3\n",
        "BATCH_SIZE = 10\n",
        "LEARNING_RATE = 2e-5"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "At9H-QOStt8_"
      },
      "source": [
        "We will use the pretrained Vision Transformer feature extractor, an Adam Optimizer, and a Cross Entropy Loss function."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 168,
          "referenced_widgets": [
            "2efb606ae85043d2aec636657b8dc23c",
            "1b6366fa2570491f852ca70c8dd78a3b",
            "39b0a4ffae63427ba7e1b688e5a6d011",
            "12fcdc8b8f9c4c14836f67a8012d43f7",
            "1fd362b69c9d44f58239aeb5080705c6",
            "4a0ebf07f34641d5b059e0def5d92d41",
            "d7ae2eb9cdf24069ad682092497e0bfe",
            "c6a703307fa84008a1a651a0bde9aff9",
            "36a2eee270944e1ea01101031a0e430c",
            "1ab261bd567b47f593bef7559d7140e5",
            "f60180a0cd674bb2b8842f6f174613b1",
            "6f521b76233846d8a09ee7ab98f7ea03",
            "cf4f03a541d94ab29d4825910471cf27",
            "6715a58a5d564ebf8bf64b705cf6f76c",
            "495a2c6efc654ff29bbcbe1a7ba1e41e",
            "0b5c8cf671ca4cb09703ee9dde8766c9",
            "d54bd61599c740ce9afbd6dd0cdf3918",
            "6373a61866e8427899a8c56ac463fc88",
            "892ab87763ca4569b1c14c7a864f0327",
            "f9ccf45eaeae49cd9ab55c8524fd06f7",
            "598d0a9ff37e4051a77fe32e33c89d69",
            "1de61920e64e41c8ba8da72e7ef9e27d",
            "f69783a89ebf4887aa55388c5f936d3b",
            "a6023bb8327044c4a6b478656261ef7d"
          ]
        },
        "id": "RIyJr8EDtvlR",
        "outputId": "1e4b58b2-ade2-4d6f-858b-8578ae8ea736"
      },
      "source": [
        "from transformers import ViTFeatureExtractor\n",
        "import torch.nn as nn\n",
        "import torch\n",
        "# Define Model\n",
        "model = ViTForImageClassification(len(train_ds.classes))    \n",
        "# Feature Extractor\n",
        "feature_extractor = ViTFeatureExtractor.from_pretrained('google/vit-base-patch16-224-in21k')\n",
        "# Adam Optimizer\n",
        "optimizer = torch.optim.Adam(model.parameters(), lr=LEARNING_RATE)\n",
        "# Cross Entropy Loss\n",
        "loss_func = nn.CrossEntropyLoss()\n",
        "# Use GPU if available  \n",
        "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') \n",
        "if torch.cuda.is_available():\n",
        "    model.cuda() "
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "2efb606ae85043d2aec636657b8dc23c",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=425.0, style=ProgressStyle(description_…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "36a2eee270944e1ea01101031a0e430c",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=345636463.0, style=ProgressStyle(descri…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "d54bd61599c740ce9afbd6dd0cdf3918",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=160.0, style=ProgressStyle(description_…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XTZ-BP1yu1Us"
      },
      "source": [
        "## Train the Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "5ql2T5PDUI1D",
        "outputId": "ea0f05df-577b-4e15-f18a-5775824e838d"
      },
      "source": [
        "import torch.utils.data as data\n",
        "from torch.autograd import Variable\n",
        "import numpy as np\n",
        "\n",
        "print(\"Number of train samples: \", len(train_ds))\n",
        "print(\"Number of test samples: \", len(test_ds))\n",
        "print(\"Detected Classes are: \", train_ds.class_to_idx) \n",
        "\n",
        "train_loader = data.DataLoader(train_ds, batch_size=BATCH_SIZE, shuffle=True,  num_workers=4)\n",
        "test_loader  = data.DataLoader(test_ds, batch_size=BATCH_SIZE, shuffle=True, num_workers=4) \n",
        "\n",
        "# Train the model\n",
        "for epoch in range(EPOCHS):        \n",
        "  for step, (x, y) in enumerate(train_loader):\n",
        "    # Change input array into list with each batch being one element\n",
        "    x = np.split(np.squeeze(np.array(x)), BATCH_SIZE)\n",
        "    # Remove unecessary dimension\n",
        "    for index, array in enumerate(x):\n",
        "      x[index] = np.squeeze(array)\n",
        "    # Apply feature extractor, stack back into 1 tensor and then convert to tensor\n",
        "    x = torch.tensor(np.stack(feature_extractor(x)['pixel_values'], axis=0))\n",
        "    # Send to GPU if available\n",
        "    x, y  = x.to(device), y.to(device)\n",
        "    b_x = Variable(x)   # batch x (image)\n",
        "    b_y = Variable(y)   # batch y (target)\n",
        "    # Feed through model\n",
        "    output, loss = model(b_x, None)\n",
        "    # Calculate loss\n",
        "    if loss is None: \n",
        "      loss = loss_func(output, b_y)   \n",
        "      optimizer.zero_grad()           \n",
        "      loss.backward()                 \n",
        "      optimizer.step()\n",
        "\n",
        "    if step % 50 == 0:\n",
        "      # Get the next batch for testing purposes\n",
        "      test = next(iter(test_loader))\n",
        "      test_x = test[0]\n",
        "      # Reshape and get feature matrices as needed\n",
        "      test_x = np.split(np.squeeze(np.array(test_x)), BATCH_SIZE)\n",
        "      for index, array in enumerate(test_x):\n",
        "        test_x[index] = np.squeeze(array)\n",
        "      test_x = torch.tensor(np.stack(feature_extractor(test_x)['pixel_values'], axis=0))\n",
        "      # Send to appropirate computing device\n",
        "      test_x = test_x.to(device)\n",
        "      test_y = test[1].to(device)\n",
        "      # Get output (+ respective class) and compare to target\n",
        "      test_output, loss = model(test_x, test_y)\n",
        "      test_output = test_output.argmax(1)\n",
        "      # Calculate Accuracy\n",
        "      accuracy = (test_output == test_y).sum().item() / BATCH_SIZE\n",
        "      print('Epoch: ', epoch, '| train loss: %.4f' % loss, '| test accuracy: %.2f' % accuracy)"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Number of train samples:  630\n",
            "Number of test samples:  90\n",
            "Detected Classes are:  {'paper': 0, 'rock': 1, 'scissors': 2}\n",
            "Epoch:  0 | train loss: 1.1379 | test accuracy: 0.20\n",
            "Epoch:  0 | train loss: 0.1694 | test accuracy: 1.00\n",
            "Epoch:  1 | train loss: 0.1064 | test accuracy: 1.00\n",
            "Epoch:  1 | train loss: 0.0560 | test accuracy: 1.00\n",
            "Epoch:  2 | train loss: 0.0597 | test accuracy: 1.00\n",
            "Epoch:  2 | train loss: 0.0905 | test accuracy: 1.00\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "LWXvWiB-srBC"
      },
      "source": [
        "## Evaluate on a Test Image\n",
        "\n",
        "Finally, let's evaluate the model on a test image:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 299
        },
        "id": "ZLv_xdYssuGO",
        "outputId": "734efe1c-371c-4714-be8a-a79f0eceaefd"
      },
      "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "\n",
        "EVAL_BATCH = 1\n",
        "eval_loader  = data.DataLoader(valid_ds, batch_size=EVAL_BATCH, shuffle=True, num_workers=4) \n",
        "# Disable grad\n",
        "with torch.no_grad():\n",
        "    \n",
        "  inputs, target = next(iter(eval_loader))\n",
        "  # Reshape and get feature matrices as needed\n",
        "  print(inputs.shape)\n",
        "  inputs = inputs[0].permute(1, 2, 0)\n",
        "  # Save original Input\n",
        "  originalInput = inputs\n",
        "  for index, array in enumerate(inputs):\n",
        "    inputs[index] = np.squeeze(array)\n",
        "  inputs = torch.tensor(np.stack(feature_extractor(inputs)['pixel_values'], axis=0))\n",
        "\n",
        "  # Send to appropriate computing device\n",
        "  inputs = inputs.to(device)\n",
        "  target = target.to(device)\n",
        " \n",
        "  # Generate prediction\n",
        "  prediction, loss = model(inputs, target)\n",
        "    \n",
        "  # Predicted class value using argmax\n",
        "  predicted_class = np.argmax(prediction.cpu())\n",
        "  value_predicted = list(valid_ds.class_to_idx.keys())[list(valid_ds.class_to_idx.values()).index(predicted_class)]\n",
        "  value_target = list(valid_ds.class_to_idx.keys())[list(valid_ds.class_to_idx.values()).index(target)]\n",
        "        \n",
        "  # Show result\n",
        "  plt.imshow(originalInput)\n",
        "  plt.xlim(224,0)\n",
        "  plt.ylim(224,0)\n",
        "  plt.title(f'Prediction: {value_predicted} - Actual target: {value_target}')\n",
        "  plt.show()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "torch.Size([1, 3, 224, 224])\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "gGVIM5jX2Z5b"
      },
      "source": [
        "## Save the Entire Model\n",
        "\n",
        "We can save the entire model as follows:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "x4S-BcSI2v88"
      },
      "source": [
        "torch.save(model, '/content/model.pt')"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aeJ99BfV9QRo"
      },
      "source": [
        "## Export Trained Model\n",
        "\n",
        "Now that you have trained your custom vision transformer, you can export the trained model you have made here for inference on your device elsewhere"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "gFmfiH0Z3QJb",
        "outputId": "2351b3dd-4ced-4300-f13c-18c740b12a11"
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/gdrive')\n",
        "\n",
        "%cp /content/model.pt /content/gdrive/My\\ Drive"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Mounted at /content/gdrive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ORZKpeH1REHP"
      },
      "source": [
        "## Use your Exported Model"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "rS706FbORDiO",
        "outputId": "74fb0815-f1dd-463c-b012-3cfa546cbd08"
      },
      "source": [
        "MODEL_PATH = '/content/model.pt'\n",
        "model = torch.load(MODEL_PATH)\n",
        "model.eval()"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "ViTForImageClassification(\n",
              "  (vit): ViTModel(\n",
              "    (embeddings): ViTEmbeddings(\n",
              "      (patch_embeddings): PatchEmbeddings(\n",
              "        (projection): Conv2d(3, 768, kernel_size=(16, 16), stride=(16, 16))\n",
              "      )\n",
              "      (dropout): Dropout(p=0.0, inplace=False)\n",
              "    )\n",
              "    (encoder): ViTEncoder(\n",
              "      (layer): ModuleList(\n",
              "        (0): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (1): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (2): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (3): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (4): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (5): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (6): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (7): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (8): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (9): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (10): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "        (11): ViTLayer(\n",
              "          (attention): ViTAttention(\n",
              "            (attention): ViTSelfAttention(\n",
              "              (query): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (key): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (value): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "            (output): ViTSelfOutput(\n",
              "              (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "              (dropout): Dropout(p=0.0, inplace=False)\n",
              "            )\n",
              "          )\n",
              "          (intermediate): ViTIntermediate(\n",
              "            (dense): Linear(in_features=768, out_features=3072, bias=True)\n",
              "          )\n",
              "          (output): ViTOutput(\n",
              "            (dense): Linear(in_features=3072, out_features=768, bias=True)\n",
              "            (dropout): Dropout(p=0.0, inplace=False)\n",
              "          )\n",
              "          (layernorm_before): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "          (layernorm_after): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "        )\n",
              "      )\n",
              "    )\n",
              "    (layernorm): LayerNorm((768,), eps=1e-12, elementwise_affine=True)\n",
              "    (pooler): ViTPooler(\n",
              "      (dense): Linear(in_features=768, out_features=768, bias=True)\n",
              "      (activation): Tanh()\n",
              "    )\n",
              "  )\n",
              "  (dropout): Dropout(p=0.1, inplace=False)\n",
              "  (classifier): Linear(in_features=768, out_features=3, bias=True)\n",
              ")"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 11
        }
      ]
    }
  ]
}
